US20110113350A1 - Method, system and program product for building collaboration applications using multiple-peer user interface libraries - Google Patents

Method, system and program product for building collaboration applications using multiple-peer user interface libraries Download PDF

Info

Publication number
US20110113350A1
US20110113350A1 US13/006,997 US201113006997A US2011113350A1 US 20110113350 A1 US20110113350 A1 US 20110113350A1 US 201113006997 A US201113006997 A US 201113006997A US 2011113350 A1 US2011113350 A1 US 2011113350A1
Authority
US
United States
Prior art keywords
collaboration
users
widgets
peer
java
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US13/006,997
Inventor
Cohan S. Carlos
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US13/006,997 priority Critical patent/US20110113350A1/en
Publication of US20110113350A1 publication Critical patent/US20110113350A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • H04L9/3213Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2115Third party
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/00086Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
    • G11B20/00137Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving measures which result in a restriction to contents recorded on or reproduced from a record carrier to authorised users
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/00086Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
    • G11B20/00188Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving measures which result in a restriction to authorised devices recording or reproducing contents to/from a record carrier
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/00086Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
    • G11B20/0021Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving encryption or decryption of contents recorded on or reproduced from a record carrier
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/00086Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
    • G11B20/0021Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving encryption or decryption of contents recorded on or reproduced from a record carrier
    • G11B20/00485Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving encryption or decryption of contents recorded on or reproduced from a record carrier characterised by a specific kind of data which is encrypted and recorded on and/or reproduced from the record carrier
    • G11B20/00492Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving encryption or decryption of contents recorded on or reproduced from a record carrier characterised by a specific kind of data which is encrypted and recorded on and/or reproduced from the record carrier wherein content or user data is encrypted
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/00086Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
    • G11B20/00731Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving a digital rights management system for enforcing a usage restriction
    • G11B20/00847Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving a digital rights management system for enforcing a usage restriction wherein the usage restriction is defined by a licence file
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution
    • H04L2209/603Digital right managament [DRM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/101Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying security measures for digital rights management

Definitions

  • the present invention relates to a method and system for building collaboration applications and a computer program product for deploying the collaboration applications in a deployment environment, often referred to as a collaboration server. More particularly, the present invention relates to a method, system and computer program product for building a collaboration server for facilitating deployment of collaboration applications on the collaboration server using multiple-peer user interface libraries.
  • collaboration technologies In today's business environment, organizations and/or businesses facilitate collaboration among employees and/or end users. Collaboration in various settings is achieved by using collaboration technologies. With the use of collaboration technologies, employees of a business and/or organization scattered throughout the world can collaborate with one another on a project or end users accessing various collaboration software can chat with one another or play a game with one another.
  • Traditional collaboration technologies for developing collaboration applications require programmers to write collaboration applications in multiple languages, with some pieces deployed on client programs and some pieces on collaboration servers. Further, traditional technologies require a programmer to be aware of the existence of a network and to use an application-specific communication protocol for communicating with the different components, thus, making the collaboration applications written in traditional ways difficult to test and to initialize with a complex state. As such, there is a need for an efficient and cost effective way to develop collaboration technologies that promote collaboration and which overcome the limitations of traditional collaboration technologies.
  • a method of building a collaboration server for facilitating deployment of a collaboration application includes installing a collaboration server application on a server connected to a network and being configured to run a collaboration application using one or more customized user interface libraries having collaboration functionality, each of the one or more customized user interface libraries having one or more customized widgets capable of mapping to one or more peer widgets, deploying a collaboration application on the server, wherein a user interface of the collaboration application is written using one or more standard user interface libraries, and launching execution of the collaboration application on the server when one or more collaborating users of a collaborating group connect to the server over the network, such that a rendering of a shared state of the user interface is displayed on a client program corresponding to each of the one or more collaborating users connected to the server.
  • the method further includes displaying the shared state of the user interface on another client program corresponding to the new collaborating user. Further, when a change is made to the shared state of the user interface by a collaborating user among the one or more collaborating users, the method includes broadcasting the change made to the shared state to a remainder of the one or more collaborating users.
  • the displaying step includes keying the shared state of the user interface to the collaboration group, storing the shared state of the user interface on the server, and displaying the rendering of the shared state of the user interface on the another client program corresponding to the new collaborating user when the new collaborating user connects to the server.
  • the broadcasting step includes issuing a notification to each client program corresponding to the remainder of the one or more collaborating users, such that the rendering of the shared state of the user interface is updated to reflect the change made to the shared state of the user interface.
  • the new collaborating user is either a first user in the collaborating group who connects to the server at an initial point-in-time or is a subsequent user in the collaborating group who connects to the server at a subsequent point-in-time.
  • the change made to the shared state of the user interface is broadcasted across the network using a protocol chosen from an Internet protocol suite.
  • the collaboration application and the collaboration server application are applications written in an object-oriented programming language.
  • a system for facilitating collaboration in an online collaborative environment includes a collaboration server application installed on a server coupled to a network and being configured to run a collaboration application using one or more modified widget libraries includes of one or more customized widgets, each customized widget of the one or more customized widgets being configured to map to one or more peer widgets created on one or more local user interfaces corresponding to one or more collaborating users connected to the server, and a collaboration application deployed on the server, the collaboration server application being configured to run the collaboration application on the server when a collaborating user connects to the server, such that a shared part of a user interface of the collaboration application run on the server is stored on the server in order to display the shared part of the user interface on each local user interface corresponding to each of the collaborating users connected to the server and wherein any change made to the shared part of the user interface displayed on a local user interface of a collaborating user among the collaborating users is broadcasted and displayed on each remaining local user interface corresponding to each remaining collaborating user among the
  • the collaboration server application is configured to key the shared part of the user interface to a collaboration group that includes the collaborating users. Further, the collaboration server application is configured to display the shared part of the user interface on a local user interface of a new collaborating user when the new collaborating user connects to the server.
  • the new collaborating user is either a first user in the collaborating group who connects to the server at an initial point-in-time or a subsequent user in the collaborating group who connects to the server at a subsequent point-in-time.
  • the collaboration server application is further configured to issue a notification to each local user interface corresponding to the each remaining collaborating users of the collaborating users connected to the server in order to update and display any change made to the shared part of the user interface. Further, in an embodiment, the change made to the shared state of the user interface is broadcasted across the network using a protocol chosen from an Internet protocol suite.
  • the collaboration application and the collaboration server application are applications written in an object-oriented programming language.
  • the present invention provides a computer program product for building a collaboration server application that facilitates deployment of a collaboration application.
  • the computer program product includes a computer readable medium, first program instructions to install a collaboration server application on a host server connected to a network, the collaboration server application being configured to run a collaboration application using customized widget libraries that include one or more customized widgets, each of the customized widgets being capable of creating one or more peer widgets on each local user interface of a client program corresponding to each of one or more collaborating users connected to the host server.
  • the computer program product includes second program instructions to run on the host server a collaboration application deployed thereon, the collaboration application having a user interface written using one or more standard widget libraries and third program instructions to display a shared part of the user interface of the collaboration application on a local user interface of a client program corresponding to a new collaborating user when the new collaborating user connects to the host server.
  • the new collaborating user includes at least one of: a first user in the collaborating group who connects to the host server at an initial point-in-time or a subsequent user in the collaborating group who connects to the host server at a subsequent point-in-time.
  • the second program instructions include instructions to key to a collaborating group the shared part of the user interface displayed as each local user interface corresponding to the one or more collaborating users.
  • the third program instructions include instructions to share between the one or more collaborating users one or more customized widgets used to render the shared part of the user interface displayed as the local user interface on the client program corresponding to the one or more collaborating users.
  • the computer program product includes fourth program instructions to update the shared part of the user interface displayed on the each local user interface corresponding to the one or more collaborating users when a change is made to the shared part of the user interface by any of the one or more collaborating users.
  • the fourth program instructions include instructions to transmit over the network the change made to the shared part of the user interface displayed as the local user interface using a protocol chosen from an Internet protocol suite.
  • each of the first, second, third and fourth program instructions are stored on the computer readable medium.
  • both the collaboration application and the collaboration server application are applications written in an object-oriented programming language.
  • FIG. 1 depicts a flowchart which outlines the steps involved in processing different types of events that are received by a host server or system from a client program, in accordance with an embodiment of the present invention.
  • FIG. 2 depicts a flowchart which outlines the steps involved in processing UI (User Interface) widget events that are received by a host server or system from a client program, in accordance with an embodiment of the present invention.
  • UI User Interface
  • FIG. 3 depicts a flowchart which outlines the steps involved in creating peer widgets on collaborating client programs when a shared widget is created by the collaboration application running on the host server or system, in accordance with an embodiment of the present invention.
  • FIG. 4 depicts a flowchart which outlines the steps involved in communicating to one or more collaborating client programs changes in state of a shared widget that is modified on the host server or system, in accordance with an embodiment of the present invention.
  • FIG. 5 depicts a collaboration system that includes a plurality of clients and a server connected over a network communications channel, with the server having a collaboration server application implemented thereon for facilitating deployment of a collaboration application on the server for providing collaboration among one or more clients, in accordance with an embodiment of the present invention.
  • FIG. 6 is a schematic block system diagram illustrating an embodiment of a server having a collaboration server application implemented thereon for facilitating deployment of a collaboration application on the server, in accordance with an embodiment of the present invention.
  • FIG. 7 is a schematic block system diagram illustrating an embodiment of a collaboration server application for facilitating deployment of a collaboration application for providing collaboration among one or more clients, in accordance with an embodiment of the present invention.
  • FIG. 8 is a schematic block system diagram illustrating an embodiment of a collaboration system having a collaboration server application or computer program product implemented thereon for facilitating deployment of a collaboration application on the server for collaboration among users, in accordance with an embodiment of the present invention.
  • modules may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components.
  • a module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like.
  • Modules may also be implemented in software for execution by various types of processors.
  • An identified module or component of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module.
  • modules of executable code could be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices.
  • operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices, over disparate memory devices, and may exist, at least partially, merely as electronic signals on a system or network.
  • modules may also be implemented as a combination of software and one or more hardware devices. For instance, a module may be embodied in the combination of a software executable code stored on a memory device. In a further example, a module may be the combination of a processor that operates on a set of operational data. Still further, a module may be implemented in the combination of an electronic signal communicated via transmission circuitry.
  • the invention provides a method of building a collaboration server for facilitating deployment of a collaboration application.
  • the method includes installing a collaboration server application on a server connected to a network and being configured to run a collaboration application using one or more customized user interface libraries having collaboration functionality, each of the one or more customized user interface libraries being configured to create one or more customized widgets capable of mapping to one or more peer widgets, deploying a collaboration application on the server, wherein a user interface of the collaboration application is written using one or more standard user interface libraries, and launching execution of the collaboration application on the server when one or more collaborating users of a collaborating group connect to the server over the network, such that a rendering of a shared state of the user interface is displayed on a client program corresponding to each of the one or more collaborating users connected to the server.
  • the method further includes displaying the shared state of the user interface on another client program corresponding to the new collaborating user. Further, when a change is made to the shared state of the user interface by a collaborating user among the one or more collaborating users, the method includes broadcasting the change made to the shared state to a remainder of the one or more collaborating users.
  • the displaying step includes keying the shared state of the user interface to the collaboration group, storing the shared state of the user interface on the server, and displaying the rendering of the shared state of the user interface on the another client program corresponding to the new collaborating user upon launching of the collaboration application when the new collaborating user connects to the server.
  • the broadcasting step includes issuing a notification to each client program corresponding to the remainder of the one or more collaborating users, such that the rendering of the shared state of the user interface is updated to reflect the change made to the shared state of the user interface.
  • the new collaborating user is either a first user in the collaborating group who connects to the server at an initial point-in-time or is a subsequent user in the collaborating group who connects to the server at a subsequent point-in-time.
  • the change made to the shared state of the user interface is broadcasted across the network using a protocol chosen from an Internet protocol suite. In an embodiment, the change made to the shared state of the user interface is broadcasted across the network using a HTTP (Hypertext Transfer Protocol) Internet protocol.
  • the collaboration application and the collaboration server application are applications written in an object-oriented programming language. In an embodiment, the collaboration application and the collaboration server application are applications written in the Java programming language.
  • the description herein below describes both the collaboration application or program and the collaboration server application as programs written in the Java programming language, it should be understood that the respective applications or programs can be written in any other object-oriented or object-based or interpreted or compiled programming language by one skilled in the art.
  • the client program used by the one or more collaborating users is a web browser.
  • FIGS. 1 through 4 illustrate a method of building a collaboration server for facilitating deployment of a collaboration application written using standard UI (User Interface) libraries on the collaboration server.
  • host server or “host system” refers to a server or system that has installed thereon a collaboration server application for facilitating deployment of a collaboration application or program written using standard UI libraries and which allows collaboration among users.
  • collaboration server application refers to an application installed on the host server for facilitating deployment of a collaboration application.
  • collaboration server refers to the deployment environment, namely, the host server having installed thereon the collaboration server application.
  • collaboration server application uses UI libraries that are implemented so that UI widgets can have multiple-peer widgets.
  • collaboration application refers to an application or program written by a programmer to run using the collaboration server application, for example, a gaming application or program or a chat application or program that is used for collaborating with other users.
  • the collaboration application deployed using the collaboration server application may be written as a simple one-user or standalone single program rather than different programs, where the standalone program can be run on a laptop or computer using a virtual machine without the involvement of a network.
  • the collaboration server application allows programmers to program using standard Java widget or user interface (UI) libraries as if they were writing standalone applications rather than online collaboration applications.
  • UI user interface
  • a standard Java UI library is made up of Java classes and Java interfaces, which implement or define Java methods.
  • Java collaboration application or program runs, it creates widget trees.
  • a widget tree is the tree representation of widgets, widget groups and frames in a screen. The largest widget, the frame, is the root of the tree. Each group that is contained within a larger widget is a branch of the widget tree. The widgets that do not contain other widgets, (buttons for example) are leaves of the widget tree.
  • the Java widgets are used to create the user interface of the collaboration application.
  • Each program typically uses one widget library, though multiple libraries may be used. If a programmer wants to add a Java widget to a parent widget tree in an application, the programmer uses Java program calls. The calls depend on the widget library.
  • Each library has its own procedures for adding widgets to widget trees.
  • the association between a java layer widget and a native layer widget is created when a newly created java widget is added to a widget tree or when the widget tree is made visible.
  • the native layer is the underlying display context where the user interface is displayed.
  • the native layer is the operating system, which includes the libraries that the operating system uses to draw frames and widgets on a computer screen.
  • the native layer could be the Windows® operating system with its GDI (Graphic Device Interface) and SDK (software Development Kit) libraries or the Macintosh® operating system and its associated libraries or the Linux® operating system with its Motif, GTK (Gimp Tool Kit) or a Qt libraries.
  • the programmer adds widgets to a widget tree to create a GUI (Graphical User Interface).
  • the Java widget objects correspond one to one with the native widgets that they encapsulate.
  • a Java widget is never associated with more than one native or peer widget at any given time.
  • a Java widget has a peer widget that it uses to render itself on the host operating system.
  • the peer widget uses the Java widget to communicate with the Java user program, through its event handlers and through manipulation of the state of the Java widget.
  • a typical Java widget cannot be added to two widget trees because each widget is only mapped to one peer. For a widget to appear in two places, it must be mapped to two peers.
  • the collaboration server application includes multiple-peer or customized UI libraries.
  • the customized or multiple-peer widget libraries form part of the collaboration server application and, therefore, are placed on the host server.
  • the customized or multiple-peer UI libraries with the collaboration functionality allow clients to connect to the collaboration server application using a web browser or any other client program and to use the collaboration application installed thereon.
  • Client programs do not have to be built using a non-standard UI library since the multiple-peer UI libraries on the server have the same set of Java classes and Java methods as a standard UI library.
  • a multiple-peer UI library is requested by an instance of a collaboration application to create a widget, it creates a Java object (the widget) on the server and it creates a peer widget in the client program as well.
  • the UI libraries in the collaboration server application are capable of creating multiple peer widgets and synchronizing multiple peer widgets (making sure that shared widgets have the same state on each of the client programs at any given time).
  • Each Java widget has a state, which can be changed by user actions and the collaboration application.
  • the widget redraws or renders the new state on each user's client program.
  • the state of a shared widget refers to any attribute, for example, color and dimensions that a shared widget possesses and displays to multiple users.
  • a shared state is the position of a shared widget, for instance, a chess piece on a shared chessboard.
  • the collaboration application is launched when the first user belonging to a certain collaborating group connects to the server using the collaboration server application.
  • the collaboration application runs, if a Java object representing a frame is created in Java, then the user's client program is sent a representation of the frame to be displayed on the user's client program.
  • the object that is displayed in the user's client program is called the peer object and a mapping of the peer object to the Java object is stored on the collaboration server.
  • every widget in Java has an equivalent peer widget on the user's client program.
  • collaboration application When a user enters a collaboration context, the collaboration application creates the shared parts of the user interface by reusing shared widgets and widget trees. A new user commences working with the shared widgets like all the other collaborating users. So collaboration is achieved by sharing Java widgets or widget trees between the collaborating users.
  • numeral 100 depicts a flowchart which outlines the steps involved in processing different types of events that are received by a host server or system from a client program, for example, a browser program, and are to be displayed to others by a collaboration server, in accordance with an embodiment of the invention.
  • the term “event” refers to an action or occurrence detected by a client program, such as the clicking of a button or the pressing of a key, etc., as well as the launching of a program, for instance, when a user first connects to a collaboration server application. As shown in FIG.
  • the collaboration server application determines whether the event has a peer widget ID in step 104 . If the event has a peer widget ID in step 104 (“Y” branch), then the process continues with step 202 in FIG. 2 , whereby the collaboration server application processes the event, as will be discussed herein below with respect to FIG. 2 . However, if the event does not have a peer widget ID in step 104 (“N” branch), then the collaboration server application determines in step 108 whether or not the event is for starting or launching a collaboration application or program.
  • step 108 If the event is for starting a collaboration application or program in step 108 (“Y” branch), then the collaboration server application launches execution of the collaboration application or program and the process continues with step 302 in FIG. 3 , whereby the collaboration server application creates peer widgets, as will be discussed herein below with respect to FIG. 3 .
  • step 108 if the event is not for starting a collaboration program (“N” branch), then the collaboration server application determines in step 110 whether or not the event is for requesting a screen refresh, for instance, when a state of a shared widget has changed. If the event is not for requesting a screen refresh in step 110 (“N” branch), then an error message is generated in step 112 , ending the process at step 116 .
  • step 110 the event is for requesting a screen refresh (“Y” branch)
  • the collaboration server application recreates all the peer widgets that need to be updated by continuing the process outlined in FIG. 4 , starting with step 402 , whereby any changes in state are set for the new peer widgets and the changes in state are communicated to one or more collaborating client programs, as discussed herein below with respect to FIG. 4 .
  • reference numeral 200 depicts a flowchart which outlines the steps involved in processing UI or peer widget events that are received by a collaboration server application (on a host server or system) from a client program in step 102 of FIG. 1 .
  • the collaboration server application receives in step 202 the event notification request message along with the peer widget ID.
  • the collaboration server application identifies in step 204 the widget that is to be notified using the peer widget ID and the peer-to-widget mapping provided by the multiple-peer UI library.
  • the collaboration server application calls in step 206 suitable methods in the widget and passes as parameters all required information about the event.
  • the collaboration server application sends the event from the widget to event handlers in the collaboration application deployed on the collaboration server application.
  • the collaboration server application sends to the client program from which the event was received, a response message with all changes to the widgets' states resulting from the handling of the event.
  • the collaboration server application notifies other client program(s) that share any modified widgets that a state change has taken place.
  • the collaboration server application makes a determination in step 216 as to whether or not the other client program(s) use a request-based Internet protocol. If it is determined in step 216 that a client program uses a request-based Internet protocol (“Y” branch), then the process continues with step 402 in FIG.
  • step 216 if it is determined in step 216 that the client program does not use a request-based Internet protocol (“N” branch), then the collaboration server application sends to the client program in step 218 the changes in the widget state, ending the process at step 220 .
  • the flowchart in FIG. 2 depicts how the collaboration server updates or displays any changes in shared state on multiple browsers or client programs when a user's actions (clicking a button, etc.) modify the shared state of a user interface element or widget of the collaboration application running on a server on a network.
  • the click handler creates a new collaboration group, adds both self (user A) and user B to the group, launches a chat client program through that collaboration group.
  • the client program then starts up.
  • the shared part of the UI would be displayed with the same state that is displayed to the other users.
  • reference numeral 300 depicts a flowchart which outlines the steps involved in creating peer widgets on collaborating client programs when a shared widget is created by the collaboration application running using the collaboration server application.
  • the collaboration server application launches execution of a collaboration application in step 114 of FIG. 1
  • the collaboration server application executes program commands as the result of the event received by the collaboration server application from a client program.
  • the event can include the launching of a program.
  • the collaboration server application For each shared widget created and displayed in a widget tree in step 304 , when the collaboration application is launched, the collaboration server application makes a determination in step 306 , as to whether or not the shared widget has a list of existing peer widgets, that is, whether or not there are other existing peer widgets mapped to the shared widget. If it is determined in step 306 that the shared widget has a list of existing peer widgets (“Y” branch), then a new peer widget is created in the client program in step 308 . In step 312 , the new peer widget is initialized with the current shared state of the shared widget.
  • step 306 it is determined that the shared widget does not have a list of existing peer widgets (“N” branch)
  • step 310 a default state is set for the new peer widget created in the client program, since this is the first peer widget.
  • the new peer widget is initialized with the current shared state of the shared widget in step 312 and/or after a default state is set for the new peer widget in step 310
  • the new peer widget is added to the list of existing peer widgets mapped to the widget in step 316 .
  • step 318 a rendering of the new peer widget is displayed on the client program, ending the process at step 320 .
  • a chessboard appears in the user's browsers, which contains the peer objects.
  • Java objects which hold state information, that is, holds information as to where the pieces are, etc.
  • the collaboration server which stores all the state information, creates another set of peers in the user B's browser.
  • the collaboration server synchronizes the new peer widgets with the state of the other peer widgets. So if a black square widget is highlighted, it will be highlighted in the peer widget created in the new user's browser or client program.
  • the steps are the same when a shared widget tree is added to a widget tree, but one peer is added to each of the widgets in the shared widget tree. Furthermore, the steps are the same for adding widgets or widget trees into shared and unshared (non-collaborative) widget trees.
  • reference numeral 400 depicts a flowchart which outlines the steps involved in communicating to one or more collaborating client programs changes in state of a shared widget that is modified on the collaboration server application.
  • the process continues at step 402 in FIG. 4 with the collaboration server application receiving requests from the client program for a copy of the state of the shared widget.
  • step 404 a determination is made whether or not there are only a few changes to the widget since the client program was last updated.
  • step 408 the collaboration server application sends to the client program a copy of the shared widget's state, ending the process at step 410 .
  • step 406 the collaboration server application sends to the client program a list of all the changes to the shared widget since the last update, ending the process at step 410 .
  • the customized widget libraries used by the collaboration server can automatically serialize the whole screen (frame widget) and send it to a new user joining a collaboration group.
  • the collaboration server communicates to a user, who joins a collaborating group at a later point-in-time, the state of the screen at that particular point-in-time. Since they are connecting to the same widget (the frame), they have access to the state information for that widget. Additionally, the collaboration server has the capability to synchronize state of the shared widget between multiple peers, since the peer widgets could be created at different times. For example, if there are four browsers that are connected to a server, the widget libraries used by the collaboration server realize that the window or frame is shared with four peers, so anytime a change occurs in the window, the widget libraries in the collaboration server handle the changes by sending a message out that notifies all the peers of the change.
  • one way to track changes or record changes to a shared widget is to check-point changes from the start.
  • a check-point is a label for a sequence of changes, for instance, when a last person joined the group.
  • the state of a widget (say its color) changes over the course of a period, one can record or track changes from that check-point.
  • any and all changes to a widget since the last check-point are communicated to the other peer widgets, so that those changes can be communicated to the widget which would be set to the same state as the other user(s).
  • the multiple peers could be synchronized by going through an initialization sequence that transfers the state of the Java widget completely to the new peer widgets.
  • the invention provides a system for facilitating collaboration in an online collaborative environment.
  • FIGS. 5-7 depict various components of a collaboration server system having installed thereon a collaboration server application for facilitating deployment of a collaboration application on the collaboration server system.
  • reference numeral 500 depicts a collaboration system that includes a plurality of clients 502 , 504 , 506 , 508 , 510 , 512 and 514 and a host server 516 connected over a network communications channel, with the host server 516 having a collaboration server application implemented thereon for facilitating deployment of a collaboration application using the collaboration server application installed on server 516 for providing collaboration among the one or more clients 502 through 514 , in accordance with an embodiment of the present invention.
  • the collaboration system 500 comprises a network communications channel, for instance, the Internet 520 , where a plurality of clients and servers are connected to the network communications channel 520 , which serves as a communications channel for the various components of the system 500 .
  • the communications channel 520 may be, in one embodiment, an Ethernet communications channel, a wireless communications channel, or another equivalent communications channel.
  • the clients include clients, such as, personal computers ( 506 and 510 ), laptops ( 502 , 512 and 514 ), handheld devices, for instance, cell phones ( 504 ), personal digital assistants (PDAs 508 ), etc.
  • the depicted networked system 500 shown in FIG. 5 shows a single server 516 and clients 502 through 514
  • the system 500 may comprise a combination of various network configurations having fewer or more clients, additional servers, such as administrative servers, e-mail servers, etc. as well as alternate client-server configurations.
  • the clients 502 - 514 are configured to access the collaboration application deployed on the collaboration server 516 and to collaborate with one another over the network 520 .
  • FIG. 6 shows an embodiment of a collaboration server 600 having implemented thereon a collaboration server application 612 that is configured to deploy a collaboration application 614 on the server 600 , in accordance with the invention.
  • the collaboration server 600 includes a central processing unit (CPU) 604 , a local storage device 602 , a network interface 608 , and a memory 610 .
  • the CPU 604 is configured generally to execute operations within the collaboration server 600 .
  • the user interface 606 in one embodiment, is configured to allow a user to interact with the server 600 , including allowing input data and commands from a user and communicating output data to the user.
  • the network interface 608 is configured, in one embodiment, to facilitate network communications of the collaboration server 600 over a network communications channel, for instance, the Internet 502 of the network 500 (shown in FIG. 5 ).
  • the local memory 610 is configured, in one embodiment, to store a collaboration server application 612 that is configured to deploy a collaboration application 614 (also stored in one embodiment in memory 610 ) on the server 600 .
  • the collaboration server application 612 is discussed further herein below with respect to FIG. 7 .
  • the collaboration application is a web based or online collaboration application that is accessed via a web browser. However, the collaboration application does not have to be accessed using a web browser.
  • a host server having a collaboration server application installed thereon is provided, such that when the collaboration application is dropped into the collaboration server, it lets multiple people collaborate, such as, play a game. Further, parts of the program that are shared will synchronize across the two or more client programs, so when player A moves a game piece on one screen, it will be shown on player B's screen.
  • the collaboration application running using the collaboration server application allows a screen to be displayed on the client programs of multiple users.
  • reference numeral 700 shows an embodiment of a collaboration server application installed on a host server, such as server 600 (shown in FIG. 6 ), where the collaboration server application 700 facilitates deployment of a collaboration application, such as the collaboration application 614 deployed on the host server 600 of FIG. 6 having installed thereon a collaboration server application (referred to by reference numeral 612 in FIG. 6 ) for facilitating deployment of the collaboration application 614 on the host server 600 .
  • the collaboration server application 700 installed on a host server contains a plurality of modules configured to functionally execute the necessary steps of facilitating deployment of the collaboration application deployed thereon.
  • the collaboration server application 700 includes a web server module 724 , an application container module 722 , a peer-widget mappings module 708 , a multiple-peer UI library module 710 , a collaboration sessions module 712 , a synchronization and notification module 704 , a persistence module 706 , a scalability module 714 , a language compiler translation module 716 , an event module 718 , and an entry point application module 720 .
  • the web server module 724 is configured to provide functionality needed to handle communications between one or more clients and the collaboration server, where the clients utilize the HTTP (Hypertext Transfer Protocol) Internet protocol for communication.
  • HTTP Hypertext Transfer Protocol
  • the application container module 722 is configured to convert the application interface of the server into a form usable by the programming language in which the collaboration application is written. For example, if the application is written in Java, the application container module is a servlet engine or a J2EE container.
  • the entry point application module 720 is configured to serve as the single point of entry of events from the client program, including even requests to start a collaboration application, as described with respect to FIG. 1 .
  • the peer-widget mappings module 708 is configured to allow events from peer widgets to be routed to the corresponding widgets in the language of the collaboration application running on the collaboration server application.
  • the multiple-peer UI library module 710 is configured to handle the functions of processing widget events (described with respect to FIG.
  • the multiple-peer UI library module 710 uses peer-widget mappings and some knowledge regarding the collaboration sessions gathered from the collaboration sessions module 712 .
  • the collaboration sessions module 734 is configured to maintain information on the client programs that correspond to the peer widgets and allows instructions to be sent to the peer widgets by the multiple-peer UI library module.
  • the synchronization and notification module 704 is configured to perform the task of notifying client programs that changes have taken place to shared widgets due to the actions of other client programs, so that the client programs can update their shared state information.
  • the scalability module 714 is configured to use one of several possible strategies to take objects out of server memory and to store them in a suitable storage space until they are needed in memory again, which allows a large number of clients to simultaneously use the server without running out of memory.
  • the language compiler (Just-In-Time or JIT) translation module 716 is configured to translate parts of the collaboration application into the language used by the client programs so that these parts of the collaboration application can be executed on the clients rather than on the server, thus, improving response times and reducing network traffic and server loads.
  • the event module 728 is configured to convert the events sent from the client program to the collaboration server application into events of a form that the multiple-peer UI library used by the collaboration server application can understand.
  • the persistence module 706 of the collaboration server application is configured to comprise of enterprise middleware or persistence tools used by certain scalability mechanisms to store data on a database for the collaboration application.
  • the collaboration applications deployed in this environment can be written just like simple one-user Java programs. All the code is in one piece, a single application, rather than different programs.
  • the programmer can write shared UI elements like chessboards by sharing the Frame or Shell where the chessboard is rendered.
  • the programmer does not have to be aware of the network and need not write any networking or communication code.
  • the programmer does not have to be aware of the browser and need not write any browser code.
  • the programmer does not have to be aware of an HTTP (Hypertext Transfer Protocol) server and does not write any server code.
  • HTTP Hypertext Transfer Protocol
  • the programmer can test the collaboration application code as a single user application using a framework, such as Eclipse or any other Java IDE (Integrated Development Environment).
  • a server API Application Programming Interface
  • the collaboration server automatically initializes the state of the application of a new user to be consistent with the state of all other users already collaborating. Changes in shared state are propagated to all collaborating users automatically, for instance, using a refresh notification, such as a repaint call mechanism for communicating changes in shared state to collaborating users.
  • the invention provides a computer program product for building a collaboration server application that facilitates deployment of a collaboration application upon it in the context of a host server.
  • the computer program product comprises a computer readable or computer-usable medium, which provides program code for use by or in connection with a computer or any instruction execution system.
  • a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
  • the computer storage medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium.
  • Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk.
  • Current examples of optical disks include compact disk—read only memory (CD-ROM), compact disk—read/write (CD-R/W) and DVD.
  • network medium can comprise of transmission devices on a network, such as, cables, routers, switches and/or network adapter cards.
  • the computer program product is in a form accessible from the computer-usable or computer-readable medium, which provides program codes or instructions for use by or in connection with a computer or any instruction execution system.
  • a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the codes or instructions for use by or in connection with the instruction execution system, apparatus, or device.
  • the medium can comprise an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium.
  • the computer-readable medium can comprise a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk.
  • optical disks include compact disc—read only memory (CD-ROM), compact disc—read/write (CD-R/W) and digital versatile/video disc (DVD).
  • the invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
  • the computer program product comprises first program instructions to install a collaboration server application on a host server connected to a network, the collaboration server application being configured to run a collaboration application using customized widget libraries which include one or more customized widgets, each of the customized widgets being capable of creating one or more peer widgets on each local user interface of a client program corresponding to each of one or more collaborating users connected to the host server. Further, the computer program product comprises second program instructions to run on the host server a collaboration application deployed thereon, the collaboration application having a user interface written using one or more standard widget libraries and third program instructions to display a shared part of the user interface of the collaboration application on a local user interface of a client program corresponding to a new collaborating user when the new collaborating user connects to the host server.
  • the new collaborating user comprises at least one of: a first user in the collaborating group who connects to the host server at an initial point-in-time or a subsequent user in the collaborating group who connects to the host server at a subsequent point-in-time.
  • the second program instructions include instructions to key to a collaborating group the shared part of the user interface displayed as each local user interface corresponding to the one or more collaborating users.
  • the third program instructions include instructions to share between the one or more collaborating users one or more customized widgets used to render the shared part of the user interface displayed as the local user interface on the client program corresponding to the one or more collaborating users.
  • the computer program product comprises fourth program instructions to update the shared part of the user interface displayed on the each local user interface corresponding to the one or more collaborating users when a change is made to the shared part of the user interface by any of the one or more collaborating users.
  • the fourth program instructions include instructions to transmit over the network the change made to the shared part of the user interface displayed as the local user interface using a protocol chosen from an Internet protocol suite.
  • each of the first, second, third and fourth program instructions are stored on the computer readable medium.
  • both the collaboration application and the collaboration server application are applications written in an object-oriented programming language, for instance, the Java programming language.
  • system 800 includes a computer infrastructure 802 , which is intended to represent any type of computer architecture that is maintained in a secure environment (i.e., for which access control is enforced).
  • infrastructure 802 includes a computer system 804 that typically represents a web server or the like. It should be understood, however, that although not shown, other hardware and software components (e.g., additional computer systems, such as, metric servers, administrative servers, routers, firewalls, etc.) could be included in infrastructure 802 .
  • a user A 830 interfaces with infrastructure 802 for accessing a collaboration application, for instance, a collaboration application 818 deployed on the computer system or server 804 for collaborating with other users over a network, such as the network 500 shown in FIG. 5 .
  • a collaboration application 818 deployed on the computer system or server 804 for collaborating with other users over a network, such as the network 500 shown in FIG. 5 .
  • one or more users B, C and D can interface with infrastructure 802 for accessing the collaboration application 818 for collaborating with each other.
  • the collaboration application 818 is a chess application or program
  • the users 830 , 840 , 842 and 844 can connect to the server 804 using computer infrastructure 802 for playing chess over a network with each other.
  • infrastructure 802 provides a secure environment.
  • the parties could access infrastructure 802 directly, or over a network via interfaces (e.g., client web browsers) loaded on computerized devices (e.g., personal computers, laptops, handheld devices, etc. shown in FIG. 5 ).
  • the network can be any type of network such as the Internet (as shown in FIG. 5 ), or can be any other network, such as, a local area network (LAN), a wide area network (WAN), a virtual private network (VPN), etc.
  • communication with infrastructure 802 could occur via a direct hardwired connection (e.g., serial port), or via an addressable connection that may utilize any combination of wire line and/or wireless transmission methods.
  • infrastructure 802 could be owned and/or operated by a party such as provider 832 , or by an independent entity. Regardless, use of infrastructure 802 and the teachings described herein could be offered to the parties on a subscription or fee-basis. In either scenario, an administrator at an administrative server or any other designated computer system (not shown in FIG. 8 ) could support and configure infrastructure 802 .
  • Computer system or server 804 is shown to include a CPU (hereinafter “processing unit 806 ”), a memory 812 , a bus 810 , and input/output (I/O) interfaces 808 . Further, computer system 800 is shown in communication with external I/O devices/resources 824 and storage system 822 .
  • processing unit 806 executes computer program codes, such as the collaboration server application 814 or program code stored in memory 812 .
  • processing unit 806 executes the computer program code for the JVM (Java Virtual Machine) 816 having customized or multiple-peer widget libraries 816 , and the collaboration application 818 that is metric collector and transmitter script inserted within each of the other web pages 816 , 818 and 820 .
  • JVM Java Virtual Machine
  • the processing unit 806 can read and/or write data, to/from memory 812 , storage system 822 , and/or I/O interfaces 808 .
  • Bus 810 provides a communication link between each of the components in computer system 800 .
  • External devices 824 can comprise any devices (e.g., keyboard, pointing device, display, etc.) that enable a user to interact with computer system 800 and/or any devices (e.g., network card, modem, etc.) that enable computer system 800 to communicate with one or more other computing devices.
  • Computer infrastructure 802 is only illustrative of various types of computer infrastructures for implementing the invention.
  • computer infrastructure 802 comprises two or more computing devices (e.g., a server cluster) that communicate over a network to perform the various process steps of the invention.
  • computer system 800 is only representative of various possible computer systems that can include numerous combinations of hardware.
  • computer system 800 can comprise any specific purpose computing article of manufacture comprising hardware and/or computer program code for performing specific functions, any computing article of manufacture that comprises a combination of specific purpose and general purpose hardware/software, or the like.
  • the program code and hardware can be created using standard programming and engineering techniques, respectively.
  • processing unit 806 may comprise a single processing unit, or be distributed across one or more processing units in one or more locations, e.g., on a client and server.
  • memory 812 and/or storage system 822 can comprise any combination of various types of data storage and/or transmission media that reside at one or more physical locations.
  • I/O interfaces 808 can comprise any system for exchanging information with one or more external devices 824 .
  • one or more additional components e.g., system software, math co-processing unit, etc.
  • the one or more external devices 824 e.g., a display
  • storage system(s) 822 could be contained within computer system 804 , and not externally as shown.
  • Storage system 822 can be any type of system (e.g., a database) capable of providing storage for information under the present invention.
  • storage system 822 could include one or more storage devices, such as a magnetic disk drive or an optical disk drive.
  • storage system 822 includes data distributed across, for example, a local area network (LAN), wide area network (WAN) or a storage area network (SAN) (not shown).
  • LAN local area network
  • WAN wide area network
  • SAN storage area network
  • additional components such as cache memory, communication systems, system software, etc., may be incorporated into computer system 800 .

Abstract

A method, system and program product for building a collaboration server for deploying a collaboration application. The method includes installing on a server a collaboration server application having multiple-peer user interface libraries capable of creating and synchronizing multiple peer widgets for each widget created by a collaboration application. The method further includes deploying a collaboration application written using standard user interface libraries, and launching execution of the collaboration application on the server when one or more users connect to the server, such that a rendering of a shared state of the user interface is displayed on a client program corresponding to the users. Further, the method includes displaying the shared state on a client program of a new user connecting to the server. Also, when a change is made to the state of a shared widget by a user, the method includes updating the client programs of all remaining users.

Description

    FIELD OF THE INVENTION
  • The present invention relates to a method and system for building collaboration applications and a computer program product for deploying the collaboration applications in a deployment environment, often referred to as a collaboration server. More particularly, the present invention relates to a method, system and computer program product for building a collaboration server for facilitating deployment of collaboration applications on the collaboration server using multiple-peer user interface libraries.
  • BACKGROUND OF THE INVENTION
  • In today's business environment, organizations and/or businesses facilitate collaboration among employees and/or end users. Collaboration in various settings is achieved by using collaboration technologies. With the use of collaboration technologies, employees of a business and/or organization scattered throughout the world can collaborate with one another on a project or end users accessing various collaboration software can chat with one another or play a game with one another. Traditional collaboration technologies for developing collaboration applications require programmers to write collaboration applications in multiple languages, with some pieces deployed on client programs and some pieces on collaboration servers. Further, traditional technologies require a programmer to be aware of the existence of a network and to use an application-specific communication protocol for communicating with the different components, thus, making the collaboration applications written in traditional ways difficult to test and to initialize with a complex state. As such, there is a need for an efficient and cost effective way to develop collaboration technologies that promote collaboration and which overcome the limitations of traditional collaboration technologies.
  • SUMMARY OF THE INVENTION
  • In a first aspect of the invention, there is provided a method of building a collaboration server for facilitating deployment of a collaboration application. The method includes installing a collaboration server application on a server connected to a network and being configured to run a collaboration application using one or more customized user interface libraries having collaboration functionality, each of the one or more customized user interface libraries having one or more customized widgets capable of mapping to one or more peer widgets, deploying a collaboration application on the server, wherein a user interface of the collaboration application is written using one or more standard user interface libraries, and launching execution of the collaboration application on the server when one or more collaborating users of a collaborating group connect to the server over the network, such that a rendering of a shared state of the user interface is displayed on a client program corresponding to each of the one or more collaborating users connected to the server. When a new collaborating user connects to the server for collaborating with the one or more collaborating users, the method further includes displaying the shared state of the user interface on another client program corresponding to the new collaborating user. Further, when a change is made to the shared state of the user interface by a collaborating user among the one or more collaborating users, the method includes broadcasting the change made to the shared state to a remainder of the one or more collaborating users. In an embodiment, the displaying step includes keying the shared state of the user interface to the collaboration group, storing the shared state of the user interface on the server, and displaying the rendering of the shared state of the user interface on the another client program corresponding to the new collaborating user when the new collaborating user connects to the server. In an embodiment, the broadcasting step includes issuing a notification to each client program corresponding to the remainder of the one or more collaborating users, such that the rendering of the shared state of the user interface is updated to reflect the change made to the shared state of the user interface. In an embodiment, the new collaborating user is either a first user in the collaborating group who connects to the server at an initial point-in-time or is a subsequent user in the collaborating group who connects to the server at a subsequent point-in-time. Further, in an embodiment, the change made to the shared state of the user interface is broadcasted across the network using a protocol chosen from an Internet protocol suite. Moreover, in an embodiment, the collaboration application and the collaboration server application are applications written in an object-oriented programming language.
  • In another aspect of the invention, there is provided a system for facilitating collaboration in an online collaborative environment. The system includes a collaboration server application installed on a server coupled to a network and being configured to run a collaboration application using one or more modified widget libraries includes of one or more customized widgets, each customized widget of the one or more customized widgets being configured to map to one or more peer widgets created on one or more local user interfaces corresponding to one or more collaborating users connected to the server, and a collaboration application deployed on the server, the collaboration server application being configured to run the collaboration application on the server when a collaborating user connects to the server, such that a shared part of a user interface of the collaboration application run on the server is stored on the server in order to display the shared part of the user interface on each local user interface corresponding to each of the collaborating users connected to the server and wherein any change made to the shared part of the user interface displayed on a local user interface of a collaborating user among the collaborating users is broadcasted and displayed on each remaining local user interface corresponding to each remaining collaborating user among the collaborating users connected to the server. In an embodiment, the collaboration server application is configured to key the shared part of the user interface to a collaboration group that includes the collaborating users. Further, the collaboration server application is configured to display the shared part of the user interface on a local user interface of a new collaborating user when the new collaborating user connects to the server. In an embodiment, the new collaborating user is either a first user in the collaborating group who connects to the server at an initial point-in-time or a subsequent user in the collaborating group who connects to the server at a subsequent point-in-time. In an embodiment, the collaboration server application is further configured to issue a notification to each local user interface corresponding to the each remaining collaborating users of the collaborating users connected to the server in order to update and display any change made to the shared part of the user interface. Further, in an embodiment, the change made to the shared state of the user interface is broadcasted across the network using a protocol chosen from an Internet protocol suite. Moreover, in an embodiment, the collaboration application and the collaboration server application are applications written in an object-oriented programming language.
  • In yet another embodiment, the present invention provides a computer program product for building a collaboration server application that facilitates deployment of a collaboration application. The computer program product includes a computer readable medium, first program instructions to install a collaboration server application on a host server connected to a network, the collaboration server application being configured to run a collaboration application using customized widget libraries that include one or more customized widgets, each of the customized widgets being capable of creating one or more peer widgets on each local user interface of a client program corresponding to each of one or more collaborating users connected to the host server. Further, the computer program product includes second program instructions to run on the host server a collaboration application deployed thereon, the collaboration application having a user interface written using one or more standard widget libraries and third program instructions to display a shared part of the user interface of the collaboration application on a local user interface of a client program corresponding to a new collaborating user when the new collaborating user connects to the host server. In an embodiment, the new collaborating user includes at least one of: a first user in the collaborating group who connects to the host server at an initial point-in-time or a subsequent user in the collaborating group who connects to the host server at a subsequent point-in-time. In an embodiment, the second program instructions include instructions to key to a collaborating group the shared part of the user interface displayed as each local user interface corresponding to the one or more collaborating users. In an embodiment, the third program instructions include instructions to share between the one or more collaborating users one or more customized widgets used to render the shared part of the user interface displayed as the local user interface on the client program corresponding to the one or more collaborating users. Furthermore, the computer program product includes fourth program instructions to update the shared part of the user interface displayed on the each local user interface corresponding to the one or more collaborating users when a change is made to the shared part of the user interface by any of the one or more collaborating users. In an embodiment, the fourth program instructions include instructions to transmit over the network the change made to the shared part of the user interface displayed as the local user interface using a protocol chosen from an Internet protocol suite. In an embodiment, each of the first, second, third and fourth program instructions are stored on the computer readable medium. In an embodiment, both the collaboration application and the collaboration server application are applications written in an object-oriented programming language.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention:
  • FIG. 1 depicts a flowchart which outlines the steps involved in processing different types of events that are received by a host server or system from a client program, in accordance with an embodiment of the present invention.
  • FIG. 2 depicts a flowchart which outlines the steps involved in processing UI (User Interface) widget events that are received by a host server or system from a client program, in accordance with an embodiment of the present invention.
  • FIG. 3 depicts a flowchart which outlines the steps involved in creating peer widgets on collaborating client programs when a shared widget is created by the collaboration application running on the host server or system, in accordance with an embodiment of the present invention.
  • FIG. 4 depicts a flowchart which outlines the steps involved in communicating to one or more collaborating client programs changes in state of a shared widget that is modified on the host server or system, in accordance with an embodiment of the present invention.
  • FIG. 5 depicts a collaboration system that includes a plurality of clients and a server connected over a network communications channel, with the server having a collaboration server application implemented thereon for facilitating deployment of a collaboration application on the server for providing collaboration among one or more clients, in accordance with an embodiment of the present invention.
  • FIG. 6 is a schematic block system diagram illustrating an embodiment of a server having a collaboration server application implemented thereon for facilitating deployment of a collaboration application on the server, in accordance with an embodiment of the present invention.
  • FIG. 7 is a schematic block system diagram illustrating an embodiment of a collaboration server application for facilitating deployment of a collaboration application for providing collaboration among one or more clients, in accordance with an embodiment of the present invention.
  • FIG. 8 is a schematic block system diagram illustrating an embodiment of a collaboration system having a collaboration server application or computer program product implemented thereon for facilitating deployment of a collaboration application on the server for collaboration among users, in accordance with an embodiment of the present invention.
  • BEST MODE FOR CARRYING OUT THE INVENTION
  • Many of the functional units described in this specification have been labeled as modules, in order to more particularly emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like. Modules may also be implemented in software for execution by various types of processors. An identified module or component of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module.
  • Further, a module of executable code could be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices. Similarly, operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices, over disparate memory devices, and may exist, at least partially, merely as electronic signals on a system or network. Furthermore, modules may also be implemented as a combination of software and one or more hardware devices. For instance, a module may be embodied in the combination of a software executable code stored on a memory device. In a further example, a module may be the combination of a processor that operates on a set of operational data. Still further, a module may be implemented in the combination of an electronic signal communicated via transmission circuitry.
  • Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.
  • Moreover, the described features, structures, or characteristics of the invention may be combined in any suitable manner in one or more embodiments. It will be apparent to those skilled in the art that various modifications and variations can be made to the present invention without departing from the spirit and scope of the invention. Thus, it is intended that the present invention cover the modifications and variations of this invention provided they come within the scope of the appended claims and their equivalents. Reference will now be made in detail to the preferred embodiments of the invention.
  • In one embodiment, the invention provides a method of building a collaboration server for facilitating deployment of a collaboration application. The method includes installing a collaboration server application on a server connected to a network and being configured to run a collaboration application using one or more customized user interface libraries having collaboration functionality, each of the one or more customized user interface libraries being configured to create one or more customized widgets capable of mapping to one or more peer widgets, deploying a collaboration application on the server, wherein a user interface of the collaboration application is written using one or more standard user interface libraries, and launching execution of the collaboration application on the server when one or more collaborating users of a collaborating group connect to the server over the network, such that a rendering of a shared state of the user interface is displayed on a client program corresponding to each of the one or more collaborating users connected to the server. When a new collaborating user connects to the server for collaborating with the one or more collaborating users, the method further includes displaying the shared state of the user interface on another client program corresponding to the new collaborating user. Further, when a change is made to the shared state of the user interface by a collaborating user among the one or more collaborating users, the method includes broadcasting the change made to the shared state to a remainder of the one or more collaborating users. In an embodiment, the displaying step includes keying the shared state of the user interface to the collaboration group, storing the shared state of the user interface on the server, and displaying the rendering of the shared state of the user interface on the another client program corresponding to the new collaborating user upon launching of the collaboration application when the new collaborating user connects to the server. In an embodiment, the broadcasting step includes issuing a notification to each client program corresponding to the remainder of the one or more collaborating users, such that the rendering of the shared state of the user interface is updated to reflect the change made to the shared state of the user interface.
  • In an embodiment, the new collaborating user is either a first user in the collaborating group who connects to the server at an initial point-in-time or is a subsequent user in the collaborating group who connects to the server at a subsequent point-in-time. Further, in an embodiment, the change made to the shared state of the user interface is broadcasted across the network using a protocol chosen from an Internet protocol suite. In an embodiment, the change made to the shared state of the user interface is broadcasted across the network using a HTTP (Hypertext Transfer Protocol) Internet protocol. Moreover, in an embodiment, the collaboration application and the collaboration server application are applications written in an object-oriented programming language. In an embodiment, the collaboration application and the collaboration server application are applications written in the Java programming language. Although, the description herein below describes both the collaboration application or program and the collaboration server application as programs written in the Java programming language, it should be understood that the respective applications or programs can be written in any other object-oriented or object-based or interpreted or compiled programming language by one skilled in the art. Moreover, in an embodiment, the client program used by the one or more collaborating users is a web browser.
  • Reference is now made to FIGS. 1 through 4, which illustrate a method of building a collaboration server for facilitating deployment of a collaboration application written using standard UI (User Interface) libraries on the collaboration server. As used herein the term “host server” or “host system” refers to a server or system that has installed thereon a collaboration server application for facilitating deployment of a collaboration application or program written using standard UI libraries and which allows collaboration among users. Further, the term “collaboration server application” refers to an application installed on the host server for facilitating deployment of a collaboration application. Also, as used herein the term “collaboration server” refers to the deployment environment, namely, the host server having installed thereon the collaboration server application. In particular, the collaboration server application uses UI libraries that are implemented so that UI widgets can have multiple-peer widgets. Furthermore, the term “collaboration application” refers to an application or program written by a programmer to run using the collaboration server application, for example, a gaming application or program or a chat application or program that is used for collaborating with other users. Further, the collaboration application deployed using the collaboration server application may be written as a simple one-user or standalone single program rather than different programs, where the standalone program can be run on a laptop or computer using a virtual machine without the involvement of a network. Thus, the collaboration server application allows programmers to program using standard Java widget or user interface (UI) libraries as if they were writing standalone applications rather than online collaboration applications.
  • Typically, a standard Java UI library is made up of Java classes and Java interfaces, which implement or define Java methods. When a Java collaboration application or program runs, it creates widget trees. A widget tree is the tree representation of widgets, widget groups and frames in a screen. The largest widget, the frame, is the root of the tree. Each group that is contained within a larger widget is a branch of the widget tree. The widgets that do not contain other widgets, (buttons for example) are leaves of the widget tree. The Java widgets are used to create the user interface of the collaboration application. Each program typically uses one widget library, though multiple libraries may be used. If a programmer wants to add a Java widget to a parent widget tree in an application, the programmer uses Java program calls. The calls depend on the widget library. Each library has its own procedures for adding widgets to widget trees. The association between a java layer widget and a native layer widget is created when a newly created java widget is added to a widget tree or when the widget tree is made visible. The native layer is the underlying display context where the user interface is displayed. In a typical Java program, the native layer is the operating system, which includes the libraries that the operating system uses to draw frames and widgets on a computer screen. For a simple Java program running on a laptop, the native layer could be the Windows® operating system with its GDI (Graphic Device Interface) and SDK (software Development Kit) libraries or the Macintosh® operating system and its associated libraries or the Linux® operating system with its Motif, GTK (Gimp Tool Kit) or a Qt libraries. The programmer adds widgets to a widget tree to create a GUI (Graphical User Interface).
  • In a standard Java UI library, the Java widget objects correspond one to one with the native widgets that they encapsulate. A Java widget is never associated with more than one native or peer widget at any given time. A Java widget has a peer widget that it uses to render itself on the host operating system. The peer widget uses the Java widget to communicate with the Java user program, through its event handlers and through manipulation of the state of the Java widget. A typical Java widget cannot be added to two widget trees because each widget is only mapped to one peer. For a widget to appear in two places, it must be mapped to two peers. To build a collaboration server that can utilize the standard Java widget libraries that programmers have used to write a standalone Java program, the collaboration server application includes multiple-peer or customized UI libraries. The customized or multiple-peer widget libraries form part of the collaboration server application and, therefore, are placed on the host server. The customized or multiple-peer UI libraries with the collaboration functionality allow clients to connect to the collaboration server application using a web browser or any other client program and to use the collaboration application installed thereon. Client programs do not have to be built using a non-standard UI library since the multiple-peer UI libraries on the server have the same set of Java classes and Java methods as a standard UI library. When a multiple-peer UI library is requested by an instance of a collaboration application to create a widget, it creates a Java object (the widget) on the server and it creates a peer widget in the client program as well. When there are multiple collaborating users running multiple collaboration applications with shared widget trees, some widgets will need to manage multiple peer widgets, one for each collaborating user. So the UI libraries in the collaboration server application are capable of creating multiple peer widgets and synchronizing multiple peer widgets (making sure that shared widgets have the same state on each of the client programs at any given time). Each Java widget has a state, which can be changed by user actions and the collaboration application. When a widget has a change in shared, the widget redraws or renders the new state on each user's client program. The state of a shared widget refers to any attribute, for example, color and dimensions that a shared widget possesses and displays to multiple users. Another example of a shared state is the position of a shared widget, for instance, a chess piece on a shared chessboard. The collaboration application is launched when the first user belonging to a certain collaborating group connects to the server using the collaboration server application. When the collaboration application runs, if a Java object representing a frame is created in Java, then the user's client program is sent a representation of the frame to be displayed on the user's client program. The object that is displayed in the user's client program is called the peer object and a mapping of the peer object to the Java object is stored on the collaboration server. As such, every widget in Java has an equivalent peer widget on the user's client program. When a user enters a collaboration context, the collaboration application creates the shared parts of the user interface by reusing shared widgets and widget trees. A new user commences working with the shared widgets like all the other collaborating users. So collaboration is achieved by sharing Java widgets or widget trees between the collaborating users.
  • Turning to FIG. 1, numeral 100 depicts a flowchart which outlines the steps involved in processing different types of events that are received by a host server or system from a client program, for example, a browser program, and are to be displayed to others by a collaboration server, in accordance with an embodiment of the invention. The term “event” refers to an action or occurrence detected by a client program, such as the clicking of a button or the pressing of a key, etc., as well as the launching of a program, for instance, when a user first connects to a collaboration server application. As shown in FIG. 1, for each event notification received in step 102 from a client program by the collaboration server application (installed on a host server), the collaboration server application determines whether the event has a peer widget ID in step 104. If the event has a peer widget ID in step 104 (“Y” branch), then the process continues with step 202 in FIG. 2, whereby the collaboration server application processes the event, as will be discussed herein below with respect to FIG. 2. However, if the event does not have a peer widget ID in step 104 (“N” branch), then the collaboration server application determines in step 108 whether or not the event is for starting or launching a collaboration application or program. If the event is for starting a collaboration application or program in step 108 (“Y” branch), then the collaboration server application launches execution of the collaboration application or program and the process continues with step 302 in FIG. 3, whereby the collaboration server application creates peer widgets, as will be discussed herein below with respect to FIG. 3. On the other hand, in step 108, if the event is not for starting a collaboration program (“N” branch), then the collaboration server application determines in step 110 whether or not the event is for requesting a screen refresh, for instance, when a state of a shared widget has changed. If the event is not for requesting a screen refresh in step 110 (“N” branch), then an error message is generated in step 112, ending the process at step 116. However, if in step 110, the event is for requesting a screen refresh (“Y” branch), then the collaboration server application recreates all the peer widgets that need to be updated by continuing the process outlined in FIG. 4, starting with step 402, whereby any changes in state are set for the new peer widgets and the changes in state are communicated to one or more collaborating client programs, as discussed herein below with respect to FIG. 4.
  • Turning to FIG. 2, reference numeral 200 depicts a flowchart which outlines the steps involved in processing UI or peer widget events that are received by a collaboration server application (on a host server or system) from a client program in step 102 of FIG. 1. In particular, when it is determined in step 104 of FIG. 1 that the event has a peer widget ID, the collaboration server application receives in step 202 the event notification request message along with the peer widget ID. The collaboration server application identifies in step 204 the widget that is to be notified using the peer widget ID and the peer-to-widget mapping provided by the multiple-peer UI library. As such, the collaboration server application calls in step 206 suitable methods in the widget and passes as parameters all required information about the event. In step 208, the collaboration server application sends the event from the widget to event handlers in the collaboration application deployed on the collaboration server application. In step 212, the collaboration server application sends to the client program from which the event was received, a response message with all changes to the widgets' states resulting from the handling of the event. Further, in step 214, the collaboration server application notifies other client program(s) that share any modified widgets that a state change has taken place. The collaboration server application makes a determination in step 216 as to whether or not the other client program(s) use a request-based Internet protocol. If it is determined in step 216 that a client program uses a request-based Internet protocol (“Y” branch), then the process continues with step 402 in FIG. 4, as will be discussed herein below with respect to FIG. 4. However, if it is determined in step 216 that the client program does not use a request-based Internet protocol (“N” branch), then the collaboration server application sends to the client program in step 218 the changes in the widget state, ending the process at step 220. So the flowchart in FIG. 2 depicts how the collaboration server updates or displays any changes in shared state on multiple browsers or client programs when a user's actions (clicking a button, etc.) modify the shared state of a user interface element or widget of the collaboration application running on a server on a network. For example, in an instant messaging collaboration program, when a user A clicks on a user B who is in the contact list, the click handler (event handler) creates a new collaboration group, adds both self (user A) and user B to the group, launches a chat client program through that collaboration group. The client program then starts up. When a new user is added to the group and the user's client program connects in, the shared part of the UI would be displayed with the same state that is displayed to the other users.
  • Turning to FIG. 3, reference numeral 300 depicts a flowchart which outlines the steps involved in creating peer widgets on collaborating client programs when a shared widget is created by the collaboration application running using the collaboration server application. In particular, when the collaboration server application launches execution of a collaboration application in step 114 of FIG. 1, the collaboration server application executes program commands as the result of the event received by the collaboration server application from a client program. As already mentioned hereinabove, the event can include the launching of a program. For each shared widget created and displayed in a widget tree in step 304, when the collaboration application is launched, the collaboration server application makes a determination in step 306, as to whether or not the shared widget has a list of existing peer widgets, that is, whether or not there are other existing peer widgets mapped to the shared widget. If it is determined in step 306 that the shared widget has a list of existing peer widgets (“Y” branch), then a new peer widget is created in the client program in step 308. In step 312, the new peer widget is initialized with the current shared state of the shared widget. However, if in step 306 it is determined that the shared widget does not have a list of existing peer widgets (“N” branch), then in step 310 a default state is set for the new peer widget created in the client program, since this is the first peer widget. After the new peer widget is initialized with the current shared state of the shared widget in step 312 and/or after a default state is set for the new peer widget in step 310, the new peer widget is added to the list of existing peer widgets mapped to the widget in step 316. In step 318, a rendering of the new peer widget is displayed on the client program, ending the process at step 320. For example, if a user, user A, starts a Java collaboration application for a chess game, a chessboard appears in the user's browsers, which contains the peer objects. There is a Java chessboard stored on the collaboration server as well with Java objects, which hold state information, that is, holds information as to where the pieces are, etc. For example, in the chess game application, if there is a black square widget in the chessboard, there will be a black square peer widget for the browser that is registered in the Java black square widget object. Now when another user, user B, connects to the same collaboration session, the collaboration server, which stores all the state information, creates another set of peers in the user B's browser. Further, the collaboration server synchronizes the new peer widgets with the state of the other peer widgets. So if a black square widget is highlighted, it will be highlighted in the peer widget created in the new user's browser or client program. The steps are the same when a shared widget tree is added to a widget tree, but one peer is added to each of the widgets in the shared widget tree. Furthermore, the steps are the same for adding widgets or widget trees into shared and unshared (non-collaborative) widget trees.
  • Turning to FIG. 4, reference numeral 400 depicts a flowchart which outlines the steps involved in communicating to one or more collaborating client programs changes in state of a shared widget that is modified on the collaboration server application. Referring to FIG. 1, when the event is for requesting a screen refresh in step 110, the process continues at step 402 in FIG. 4 with the collaboration server application receiving requests from the client program for a copy of the state of the shared widget. In step 404, a determination is made whether or not there are only a few changes to the widget since the client program was last updated. If there are more than only a few changes to the shared widget since the client program was last updated (“N” branch), then in step 408 the collaboration server application sends to the client program a copy of the shared widget's state, ending the process at step 410. However, if there are only a few changes to the shared widget since the client program was last updated (“Y” branch), then in step 406 the collaboration server application sends to the client program a list of all the changes to the shared widget since the last update, ending the process at step 410. As such, the customized widget libraries used by the collaboration server can automatically serialize the whole screen (frame widget) and send it to a new user joining a collaboration group. So the collaboration server communicates to a user, who joins a collaborating group at a later point-in-time, the state of the screen at that particular point-in-time. Since they are connecting to the same widget (the frame), they have access to the state information for that widget. Additionally, the collaboration server has the capability to synchronize state of the shared widget between multiple peers, since the peer widgets could be created at different times. For example, if there are four browsers that are connected to a server, the widget libraries used by the collaboration server realize that the window or frame is shared with four peers, so anytime a change occurs in the window, the widget libraries in the collaboration server handle the changes by sending a message out that notifies all the peers of the change. If one of the client programs notifies the server of a change, for instance, if peer A has made a move, the server is notified and the server notifies the other peers B, C and D. In an embodiment, one way to track changes or record changes to a shared widget is to check-point changes from the start. A check-point is a label for a sequence of changes, for instance, when a last person joined the group. When the state of a widget, (say its color) changes over the course of a period, one can record or track changes from that check-point. As such, any and all changes to a widget since the last check-point are communicated to the other peer widgets, so that those changes can be communicated to the widget which would be set to the same state as the other user(s). Alternatively, the multiple peers could be synchronized by going through an initialization sequence that transfers the state of the Java widget completely to the new peer widgets.
  • In another embodiment, the invention provides a system for facilitating collaboration in an online collaborative environment. Reference is now made to FIGS. 5-7, which depict various components of a collaboration server system having installed thereon a collaboration server application for facilitating deployment of a collaboration application on the collaboration server system. Turning to FIG. 5, reference numeral 500 depicts a collaboration system that includes a plurality of clients 502, 504, 506, 508, 510, 512 and 514 and a host server 516 connected over a network communications channel, with the host server 516 having a collaboration server application implemented thereon for facilitating deployment of a collaboration application using the collaboration server application installed on server 516 for providing collaboration among the one or more clients 502 through 514, in accordance with an embodiment of the present invention. In one embodiment, the collaboration system 500 comprises a network communications channel, for instance, the Internet 520, where a plurality of clients and servers are connected to the network communications channel 520, which serves as a communications channel for the various components of the system 500. The communications channel 520 may be, in one embodiment, an Ethernet communications channel, a wireless communications channel, or another equivalent communications channel. Further, in an embodiment, the clients include clients, such as, personal computers (506 and 510), laptops (502, 512 and 514), handheld devices, for instance, cell phones (504), personal digital assistants (PDAs 508), etc. Although, the depicted networked system 500 shown in FIG. 5 shows a single server 516 and clients 502 through 514, the system 500 may comprise a combination of various network configurations having fewer or more clients, additional servers, such as administrative servers, e-mail servers, etc. as well as alternate client-server configurations. Preferably, the clients 502-514 are configured to access the collaboration application deployed on the collaboration server 516 and to collaborate with one another over the network 520.
  • Turning to FIG. 6, FIG. 6 shows an embodiment of a collaboration server 600 having implemented thereon a collaboration server application 612 that is configured to deploy a collaboration application 614 on the server 600, in accordance with the invention. In an embodiment, the collaboration server 600 includes a central processing unit (CPU) 604, a local storage device 602, a network interface 608, and a memory 610. The CPU 604 is configured generally to execute operations within the collaboration server 600. The user interface 606, in one embodiment, is configured to allow a user to interact with the server 600, including allowing input data and commands from a user and communicating output data to the user. The network interface 608 is configured, in one embodiment, to facilitate network communications of the collaboration server 600 over a network communications channel, for instance, the Internet 502 of the network 500 (shown in FIG. 5). The local memory 610 is configured, in one embodiment, to store a collaboration server application 612 that is configured to deploy a collaboration application 614 (also stored in one embodiment in memory 610) on the server 600. The collaboration server application 612 is discussed further herein below with respect to FIG. 7. In an embodiment, the collaboration application is a web based or online collaboration application that is accessed via a web browser. However, the collaboration application does not have to be accessed using a web browser. So in an embodiment, a host server having a collaboration server application installed thereon is provided, such that when the collaboration application is dropped into the collaboration server, it lets multiple people collaborate, such as, play a game. Further, parts of the program that are shared will synchronize across the two or more client programs, so when player A moves a game piece on one screen, it will be shown on player B's screen. As such, the collaboration application running using the collaboration server application allows a screen to be displayed on the client programs of multiple users.
  • Turning to FIG. 7, reference numeral 700 shows an embodiment of a collaboration server application installed on a host server, such as server 600 (shown in FIG. 6), where the collaboration server application 700 facilitates deployment of a collaboration application, such as the collaboration application 614 deployed on the host server 600 of FIG. 6 having installed thereon a collaboration server application (referred to by reference numeral 612 in FIG. 6) for facilitating deployment of the collaboration application 614 on the host server 600. As shown in FIG. 7, the collaboration server application 700 installed on a host server contains a plurality of modules configured to functionally execute the necessary steps of facilitating deployment of the collaboration application deployed thereon. In particular, the collaboration server application 700 includes a web server module 724, an application container module 722, a peer-widget mappings module 708, a multiple-peer UI library module 710, a collaboration sessions module 712, a synchronization and notification module 704, a persistence module 706, a scalability module 714, a language compiler translation module 716, an event module 718, and an entry point application module 720. In an embodiment, the web server module 724 is configured to provide functionality needed to handle communications between one or more clients and the collaboration server, where the clients utilize the HTTP (Hypertext Transfer Protocol) Internet protocol for communication. Further, the application container module 722 is configured to convert the application interface of the server into a form usable by the programming language in which the collaboration application is written. For example, if the application is written in Java, the application container module is a servlet engine or a J2EE container. Moreover, the entry point application module 720 is configured to serve as the single point of entry of events from the client program, including even requests to start a collaboration application, as described with respect to FIG. 1. Further, the peer-widget mappings module 708 is configured to allow events from peer widgets to be routed to the corresponding widgets in the language of the collaboration application running on the collaboration server application. In particular, the multiple-peer UI library module 710 is configured to handle the functions of processing widget events (described with respect to FIG. 2), creating peer widgets on collaborating client programs when a shared widget is created (described with respect to FIG. 3), and communicating changes in state of a shared widget to collaborating client programs (described with respect to FIG. 4). The multiple-peer UI library module 710 uses peer-widget mappings and some knowledge regarding the collaboration sessions gathered from the collaboration sessions module 712. The collaboration sessions module 734 is configured to maintain information on the client programs that correspond to the peer widgets and allows instructions to be sent to the peer widgets by the multiple-peer UI library module. The synchronization and notification module 704 is configured to perform the task of notifying client programs that changes have taken place to shared widgets due to the actions of other client programs, so that the client programs can update their shared state information. The scalability module 714 is configured to use one of several possible strategies to take objects out of server memory and to store them in a suitable storage space until they are needed in memory again, which allows a large number of clients to simultaneously use the server without running out of memory. Further, the language compiler (Just-In-Time or JIT) translation module 716 is configured to translate parts of the collaboration application into the language used by the client programs so that these parts of the collaboration application can be executed on the clients rather than on the server, thus, improving response times and reducing network traffic and server loads. Moreover, the event module 728 is configured to convert the events sent from the client program to the collaboration server application into events of a form that the multiple-peer UI library used by the collaboration server application can understand. Further, the persistence module 706 of the collaboration server application is configured to comprise of enterprise middleware or persistence tools used by certain scalability mechanisms to store data on a database for the collaboration application.
  • The collaboration applications deployed in this environment can be written just like simple one-user Java programs. All the code is in one piece, a single application, rather than different programs. The programmer can write shared UI elements like chessboards by sharing the Frame or Shell where the chessboard is rendered. The programmer does not have to be aware of the network and need not write any networking or communication code. The programmer does not have to be aware of the browser and need not write any browser code. The programmer does not have to be aware of an HTTP (Hypertext Transfer Protocol) server and does not write any server code. The programmer does not have to know what part of his code runs on the server and what part of the code runs on the client. Further, the programmer can test the collaboration application code as a single user application using a framework, such as Eclipse or any other Java IDE (Integrated Development Environment). Moreover, a server API (Application Programming Interface) is used to store shared state in the collaboration server. There is no client API. In an embodiment, the collaboration server automatically initializes the state of the application of a new user to be consistent with the state of all other users already collaborating. Changes in shared state are propagated to all collaborating users automatically, for instance, using a refresh notification, such as a repaint call mechanism for communicating changes in shared state to collaborating users.
  • In yet another embodiment, the invention provides a computer program product for building a collaboration server application that facilitates deployment of a collaboration application upon it in the context of a host server. The computer program product comprises a computer readable or computer-usable medium, which provides program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. Preferably, the computer storage medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk—read only memory (CD-ROM), compact disk—read/write (CD-R/W) and DVD. Further, preferably, network medium can comprise of transmission devices on a network, such as, cables, routers, switches and/or network adapter cards.
  • Preferably, the computer program product is in a form accessible from the computer-usable or computer-readable medium, which provides program codes or instructions for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the codes or instructions for use by or in connection with the instruction execution system, apparatus, or device. Preferably, the medium can comprise an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. More preferably, the computer-readable medium can comprise a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Further, examples of optical disks include compact disc—read only memory (CD-ROM), compact disc—read/write (CD-R/W) and digital versatile/video disc (DVD). The invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
  • The computer program product comprises first program instructions to install a collaboration server application on a host server connected to a network, the collaboration server application being configured to run a collaboration application using customized widget libraries which include one or more customized widgets, each of the customized widgets being capable of creating one or more peer widgets on each local user interface of a client program corresponding to each of one or more collaborating users connected to the host server. Further, the computer program product comprises second program instructions to run on the host server a collaboration application deployed thereon, the collaboration application having a user interface written using one or more standard widget libraries and third program instructions to display a shared part of the user interface of the collaboration application on a local user interface of a client program corresponding to a new collaborating user when the new collaborating user connects to the host server. In an embodiment, the new collaborating user comprises at least one of: a first user in the collaborating group who connects to the host server at an initial point-in-time or a subsequent user in the collaborating group who connects to the host server at a subsequent point-in-time. In an embodiment, the second program instructions include instructions to key to a collaborating group the shared part of the user interface displayed as each local user interface corresponding to the one or more collaborating users. In an embodiment, the third program instructions include instructions to share between the one or more collaborating users one or more customized widgets used to render the shared part of the user interface displayed as the local user interface on the client program corresponding to the one or more collaborating users. Furthermore, the computer program product comprises fourth program instructions to update the shared part of the user interface displayed on the each local user interface corresponding to the one or more collaborating users when a change is made to the shared part of the user interface by any of the one or more collaborating users. In an embodiment, the fourth program instructions include instructions to transmit over the network the change made to the shared part of the user interface displayed as the local user interface using a protocol chosen from an Internet protocol suite. In an embodiment, each of the first, second, third and fourth program instructions are stored on the computer readable medium. In an embodiment, both the collaboration application and the collaboration server application are applications written in an object-oriented programming language, for instance, the Java programming language.
  • Referring now to FIG. 8, there is illustrated a system 800 for building a collaboration server application that facilitates deployment of a collaboration application, according to the present invention. As depicted, system 800 includes a computer infrastructure 802, which is intended to represent any type of computer architecture that is maintained in a secure environment (i.e., for which access control is enforced). As shown, infrastructure 802 includes a computer system 804 that typically represents a web server or the like. It should be understood, however, that although not shown, other hardware and software components (e.g., additional computer systems, such as, metric servers, administrative servers, routers, firewalls, etc.) could be included in infrastructure 802.
  • In general, a user A 830 interfaces with infrastructure 802 for accessing a collaboration application, for instance, a collaboration application 818 deployed on the computer system or server 804 for collaborating with other users over a network, such as the network 500 shown in FIG. 5. Similarly, one or more users B, C and D (designated by numerals 840, 842 and 844) can interface with infrastructure 802 for accessing the collaboration application 818 for collaborating with each other. For example, if the collaboration application 818 is a chess application or program, the users 830, 840, 842 and 844 can connect to the server 804 using computer infrastructure 802 for playing chess over a network with each other. To this extent, infrastructure 802 provides a secure environment. In general, the parties could access infrastructure 802 directly, or over a network via interfaces (e.g., client web browsers) loaded on computerized devices (e.g., personal computers, laptops, handheld devices, etc. shown in FIG. 5). In the case of the latter, the network can be any type of network such as the Internet (as shown in FIG. 5), or can be any other network, such as, a local area network (LAN), a wide area network (WAN), a virtual private network (VPN), etc. In any event, communication with infrastructure 802 could occur via a direct hardwired connection (e.g., serial port), or via an addressable connection that may utilize any combination of wire line and/or wireless transmission methods. Moreover, conventional network connectivity, such as Token Ring, Ethernet, WiFi or other conventional communications standards could be used. Still yet, connectivity could be provided by conventional TCP/IP sockets-based protocol. In this instance, the parties could utilize an Internet service provider to establish connectivity to infrastructure 802. It should be understood that under the present invention, infrastructure 802 could be owned and/or operated by a party such as provider 832, or by an independent entity. Regardless, use of infrastructure 802 and the teachings described herein could be offered to the parties on a subscription or fee-basis. In either scenario, an administrator at an administrative server or any other designated computer system (not shown in FIG. 8) could support and configure infrastructure 802.
  • Computer system or server 804 is shown to include a CPU (hereinafter “processing unit 806”), a memory 812, a bus 810, and input/output (I/O) interfaces 808. Further, computer system 800 is shown in communication with external I/O devices/resources 824 and storage system 822. In general, processing unit 806 executes computer program codes, such as the collaboration server application 814 or program code stored in memory 812. Similarly, processing unit 806 executes the computer program code for the JVM (Java Virtual Machine) 816 having customized or multiple-peer widget libraries 816, and the collaboration application 818 that is metric collector and transmitter script inserted within each of the other web pages 816, 818 and 820. While executing the collaboration application 818 using the JVM (Java Virtual Machine) 816 having customized or multiple-peer widget libraries 816, the processing unit 806 can read and/or write data, to/from memory 812, storage system 822, and/or I/O interfaces 808. Bus 810 provides a communication link between each of the components in computer system 800. External devices 824 can comprise any devices (e.g., keyboard, pointing device, display, etc.) that enable a user to interact with computer system 800 and/or any devices (e.g., network card, modem, etc.) that enable computer system 800 to communicate with one or more other computing devices.
  • Computer infrastructure 802 is only illustrative of various types of computer infrastructures for implementing the invention. For example, in one embodiment, computer infrastructure 802 comprises two or more computing devices (e.g., a server cluster) that communicate over a network to perform the various process steps of the invention. Moreover, computer system 800 is only representative of various possible computer systems that can include numerous combinations of hardware. To this extent, in other embodiments, computer system 800 can comprise any specific purpose computing article of manufacture comprising hardware and/or computer program code for performing specific functions, any computing article of manufacture that comprises a combination of specific purpose and general purpose hardware/software, or the like. In each case, the program code and hardware can be created using standard programming and engineering techniques, respectively. Moreover, processing unit 806 may comprise a single processing unit, or be distributed across one or more processing units in one or more locations, e.g., on a client and server. Similarly, memory 812 and/or storage system 822 can comprise any combination of various types of data storage and/or transmission media that reside at one or more physical locations. Further, I/O interfaces 808 can comprise any system for exchanging information with one or more external devices 824. Still further, it is understood that one or more additional components (e.g., system software, math co-processing unit, etc.) not shown in FIG. 8 can be included in computer system 800. Similarly, it is understood that the one or more external devices 824 (e.g., a display) and/or storage system(s) 822 could be contained within computer system 804, and not externally as shown.
  • Storage system 822 can be any type of system (e.g., a database) capable of providing storage for information under the present invention. To this extent, storage system 822 could include one or more storage devices, such as a magnetic disk drive or an optical disk drive. In another embodiment, storage system 822 includes data distributed across, for example, a local area network (LAN), wide area network (WAN) or a storage area network (SAN) (not shown). Although not shown, additional components, such as cache memory, communication systems, system software, etc., may be incorporated into computer system 800.
  • The foregoing descriptions of specific embodiments of the present invention have been presented for the purpose of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the claims appended hereto and their equivalents.

Claims (6)

1. A method of collaboration between users at respective client computers, the method comprising the steps of:
in response to a plurality of the users at respective different times requesting, via their respective client computers and one or more networks coupled to a collaboration server computer, participation in a collaboration specified in the request, the collaboration server computer
identifying, for each of the plurality of users, a respective set of peer Java widgets for objects in a shared user interface for the specified collaboration, and mapping the respective set of peer Java widgets to a respective set of base Java widgets stored in the collaboration server computer and previously identified for the shared user interface of the specified collaboration,
updating, for each of the plurality of users, states of the respective set of peer Java widgets to represent a state of the specified collaboration which is approximately current at the respective time of the respective request, and
sending to the client computers of the respective collaboration users data defining the shared user interface including the respective set of peer widgets with the respective state of the collaboration which is approximately current at the respective time of the respective request.
2. The method of claim 1 wherein the collaboration server computer at different times receives notifications of events from the plurality of users via the respective client computers, the events identifying updates to the respective peer widgets at the respective shared user interfaces of the respective users, and in response, the collaboration server computer updating the status of the base Java widget, identifying from the mapping the peer Java widgets of the respective users, and sending data identifying corresponding updates to the peer Java widgets at the client computers of the respective users.
3. A computer program product for collaboration between users at respective client computers, the computer program product comprising:
a computer-readable, tangible storage device; and
program instructions, for execution in a collaboration server computer, responsive to a plurality of the users at different respective times requesting, via their respective client computers and one or more networks coupled to the collaboration server computer, participation in a collaboration specified in the request, to
identify, for each of the plurality of users, a respective set of peer Java widgets for objects in a shared user interface for the specified collaboration, and map the respective set of peer Java widgets to a respective set of base Java widgets stored in the collaboration server computer and previously identified for the shared user interface of the specified collaboration,
update, for each of the plurality of users, states of the respective set of peer Java widgets to represent a state of the specified collaboration which is approximately current at the respective time of the respective request, and
send to the client computers of the respective collaboration users data defining the shared user interface including the respective set of peer widgets with the respective state of the collaboration which is approximately current at the respective time of the respective request; and wherein
the program instructions are stored in the computer-readable tangible storage device.
4. The computer program product of claim 3 further comprising:
second program instructions, for execution in the collaboration server computer, to receive at different times notifications of events from the plurality of users via the respective client computers, the events identifying updates to the respective peer widgets at the respective shared user interfaces of the respective users, and in response, update the status of the base Java widget, identify from the mapping the peer Java widgets of other of the respective users, and send data identifying corresponding updates to the peer Java widgets at the client computers of the other respective users; and wherein
the second program instructions are stored in the computer-readable tangible storage device.
5. A computer system for collaboration between users at respective client computers, the computer program product comprising:
a CPU, a computer-readable memory and a computer-readable, tangible storage device; and
program instructions, for execution in a collaboration server computer, responsive to a plurality of the users at different respective times requesting, via their respective client computers and one or more networks coupled to the collaboration server computer, participation in a collaboration specified in the request, to
identify, for each of the plurality of users, a respective set of peer Java widgets for objects in a shared user interface for the specified collaboration, and map the respective set of peer Java widgets to a respective set of base Java widgets stored in the collaboration server computer and previously identified for the shared user interface of the specified collaboration,
update, for each of the plurality of users, states of the respective set of peer Java widgets to represent a state of the specified collaboration which is approximately current at the respective time of the respective request, and
send to the client computers of the respective collaboration users data defining the shared user interface including the respective set of peer widgets with the respective state of the collaboration which is approximately current at the respective time of the respective request; and wherein
the program instructions are stored in the computer-readable tangible storage device for execution by the CPU via the computer-readable memory.
6. The computer system of claim 5 further comprising:
second program instructions, for execution in the collaboration server computer, to receive at different times notifications of events from the plurality of users via the respective client computers, the events identifying updates to the respective peer widgets at the respective shared user interfaces of the respective users, and in response, update the status of the base Java widget, identify from the mapping the peer Java widgets of other of the respective users, and send data identifying corresponding updates to the peer Java widgets at the client computers of the other respective users; and wherein
the second program instructions are stored in the computer-readable tangible storage device for execution by the CPU via the computer-readable memory.
US13/006,997 2005-10-13 2011-01-14 Method, system and program product for building collaboration applications using multiple-peer user interface libraries Abandoned US20110113350A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/006,997 US20110113350A1 (en) 2005-10-13 2011-01-14 Method, system and program product for building collaboration applications using multiple-peer user interface libraries

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US72566405P 2005-10-13 2005-10-13
US11/546,991 US8805742B2 (en) 2005-10-13 2006-10-13 Method and system for providing DRM license
US13/006,997 US20110113350A1 (en) 2005-10-13 2011-01-14 Method, system and program product for building collaboration applications using multiple-peer user interface libraries

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/546,991 Continuation US8805742B2 (en) 2005-10-13 2006-10-13 Method and system for providing DRM license

Publications (1)

Publication Number Publication Date
US20110113350A1 true US20110113350A1 (en) 2011-05-12

Family

ID=38018753

Family Applications (4)

Application Number Title Priority Date Filing Date
US11/580,110 Expired - Fee Related US8103593B2 (en) 2005-10-13 2006-10-13 Method and system for providing DRM license
US11/546,993 Abandoned US20070100764A1 (en) 2005-10-13 2006-10-13 Method and system for providing DRM license
US11/546,991 Expired - Fee Related US8805742B2 (en) 2005-10-13 2006-10-13 Method and system for providing DRM license
US13/006,997 Abandoned US20110113350A1 (en) 2005-10-13 2011-01-14 Method, system and program product for building collaboration applications using multiple-peer user interface libraries

Family Applications Before (3)

Application Number Title Priority Date Filing Date
US11/580,110 Expired - Fee Related US8103593B2 (en) 2005-10-13 2006-10-13 Method and system for providing DRM license
US11/546,993 Abandoned US20070100764A1 (en) 2005-10-13 2006-10-13 Method and system for providing DRM license
US11/546,991 Expired - Fee Related US8805742B2 (en) 2005-10-13 2006-10-13 Method and system for providing DRM license

Country Status (5)

Country Link
US (4) US8103593B2 (en)
EP (5) EP2287770A3 (en)
JP (4) JP5209862B2 (en)
KR (5) KR100763193B1 (en)
CN (6) CN101330380B (en)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060010204A1 (en) * 2004-07-06 2006-01-12 Nokia Corporation Peer-to-peer engine for object sharing in communication devices
US20090037829A1 (en) * 2007-08-01 2009-02-05 Microsoft Corporation Framework to integrate web services with on-premise software
US20120079383A1 (en) * 2010-09-29 2012-03-29 Reghu Ram Thanumalayan Server independent deployment of plug-ins
US20130288603A1 (en) * 2012-04-26 2013-10-31 Qualcomm Incorporated Orientational collaboration of data between multiple devices
US20130332526A1 (en) * 2012-06-10 2013-12-12 Apple Inc. Creating and sharing image streams
US20140047409A1 (en) * 2012-08-13 2014-02-13 Magnet Systems Inc. Enterprise application development tool
US8726147B1 (en) * 2010-03-12 2014-05-13 Symantec Corporation Systems and methods for restoring web parts in content management systems
US20140218399A1 (en) * 2011-04-07 2014-08-07 International Business Machines Corporation Systems and methods for managing computing systems utilizing augmented reality
US9032385B2 (en) 2011-12-28 2015-05-12 Lg Electronics Inc. Mobile terminal and control method thereof
US20160188170A1 (en) * 2014-12-24 2016-06-30 Wistron Corporation Method of connecting device adapted to interactive whiteboard system and host device thereof
US20170302708A1 (en) * 2011-11-23 2017-10-19 Calgary Scientific Inc. Methods and systems for collaborative remote application sharing and conferencing
US10136115B2 (en) * 2014-05-14 2018-11-20 Tencent Technology (Shenzhen) Company Limited Video shooting method and apparatus
US10284688B2 (en) 2011-09-30 2019-05-07 Calgary Scientific Inc. Tiered framework for proving remote access to an application accessible at a uniform resource locator (URL)
US10334042B2 (en) 2008-11-26 2019-06-25 Calgary Scientific Inc. Method and system for providing remote access to a state of an application program
US10410306B1 (en) 2011-01-04 2019-09-10 Calgary Scientific Inc. Method and system for providing remote access to data for display on a mobile device
US10693940B2 (en) 2011-08-15 2020-06-23 Calgary Scientific Inc. Remote access to an application program
US11074552B1 (en) 2014-06-06 2021-07-27 Massachusetts Mutual Life Insurance Company Methods for using interactive huddle sessions and sub-applications
US11270264B1 (en) 2014-06-06 2022-03-08 Massachusetts Mutual Life Insurance Company Systems and methods for remote huddle collaboration
US11294549B1 (en) * 2014-06-06 2022-04-05 Massachusetts Mutual Life Insurance Company Systems and methods for customizing sub-applications and dashboards in a digital huddle environment
US20230068410A1 (en) * 2021-08-24 2023-03-02 Figma, Inc. Integrated application platform to implement widgets

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070038576A1 (en) * 2005-08-12 2007-02-15 Lg Electronics Inc. Method for moving rights object in digital rights management
KR100763193B1 (en) * 2005-10-13 2007-10-04 삼성전자주식회사 System and Method for providing DRM license
KR100834752B1 (en) * 2006-02-17 2008-06-05 삼성전자주식회사 Apparatus and method for transferring content license
CN101321056B (en) * 2007-06-06 2012-05-23 华为技术有限公司 Method, equipment and system for forwarding permission
US8474054B2 (en) * 2007-06-26 2013-06-25 Digital Keystone, Inc. Systems and methods for conditional access and digital rights management
US20090199287A1 (en) * 2007-06-26 2009-08-06 Luc Vantalon Systems and methods for conditional access and digital rights management
KR20090004217A (en) * 2007-07-06 2009-01-12 현대자동차주식회사 The compatible system of digital-contents copyright
KR100930695B1 (en) * 2007-08-06 2009-12-09 현대자동차주식회사 DLM system and DRM contents management method
US8333114B2 (en) * 2007-11-26 2012-12-18 Tokyo Electron Limited Microstructure inspecting device, and microstructure inspecting method
US8819838B2 (en) * 2008-01-25 2014-08-26 Google Technology Holdings LLC Piracy prevention in digital rights management systems
US8321948B2 (en) * 2008-03-28 2012-11-27 Sap Ag Flexible appliance hosting with coordination of deployment, licensing and configuration
US9491184B2 (en) * 2008-04-04 2016-11-08 Samsung Electronics Co., Ltd. Method and apparatus for managing tokens for digital rights management
CN101282473B (en) * 2008-05-05 2010-10-13 国家广播电影电视总局广播科学研究院 Method for managing digital television copyright
US8095518B2 (en) * 2008-06-04 2012-01-10 Microsoft Corporation Translating DRM system requirements
KR101041368B1 (en) 2009-03-19 2011-06-14 주식회사 코아로직 Method of Accessing License and Terminal using the method
EP2257026B1 (en) * 2009-05-29 2021-01-13 Alcatel Lucent System and method for accessing private digital content
US9275195B1 (en) * 2010-02-19 2016-03-01 Copyright Clearance Center, Inc. Intermediated rights management
CN102859539B (en) * 2010-04-23 2016-06-01 日立麦克赛尔株式会社 Content reception apparatus and content delivering system
JP4909431B2 (en) * 2010-05-14 2012-04-04 株式会社エヌ・ティ・ティ・ドコモ License issuing system, client terminal, server, and license issuing method
GB201016084D0 (en) * 2010-09-24 2010-11-10 Pixelmags Inc Authorization method
US9053482B2 (en) 2011-05-24 2015-06-09 Amazon Technologies, Inc. Service for managing digital content licenses
US9064276B2 (en) * 2011-05-24 2015-06-23 Amazon Technologies, Inc. Service for managing digital content resales
US20140149544A1 (en) * 2012-11-28 2014-05-29 Qualcomm Incorporated System and method for providing rights management services for network services
EP3005205B1 (en) 2013-05-27 2019-09-25 Telefonaktiebolaget LM Ericsson (publ) Distribution of licenses within the radius of a local device
US9213820B2 (en) * 2013-09-10 2015-12-15 Ebay Inc. Mobile authentication using a wearable device
CN104809364A (en) * 2014-01-24 2015-07-29 中辉世纪传媒发展有限公司 Method and device for processing of application program of digital rights management (DRM) client
EP3491562A1 (en) * 2016-10-27 2019-06-05 Google LLC Drm sharing and playback service specification selection
CN109246079B (en) * 2018-08-02 2021-09-24 网易乐得科技有限公司 Authority management method, system, medium and electronic device
CN112257104A (en) * 2020-10-10 2021-01-22 北京字跳网络技术有限公司 Authority control method and device and electronic equipment
CN113282965A (en) * 2021-05-20 2021-08-20 苏州棱镜七彩信息科技有限公司 Open source license and copyright information tampering detection method and system

Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5915091A (en) * 1993-10-01 1999-06-22 Collaboration Properties, Inc. Synchronization in video conferencing
US6334141B1 (en) * 1999-02-02 2001-12-25 International Business Machines Corporation Distributed server for real-time collaboration
US20020073059A1 (en) * 2000-02-14 2002-06-13 Foster Douglas R. Information access, collaboration and integration system and method
US6463460B1 (en) * 1999-04-23 2002-10-08 The United States Of America As Represented By The Secretary Of The Navy Interactive communication system permitting increased collaboration between users
US20030009603A1 (en) * 2000-12-27 2003-01-09 Ruths Derek Augustus Samuel System and method for managing collaborative data representations
US20030023685A1 (en) * 2001-04-17 2003-01-30 Cousins Downs Partnership Data processing system for mapping a collaborative reasoning process
US6633924B1 (en) * 1997-10-02 2003-10-14 Charles Wu Object synchronization between objects stores on different computers
US6748418B1 (en) * 1999-06-18 2004-06-08 International Business Machines Corporation Technique for permitting collaboration between web browsers and adding content to HTTP messages bound for web browsers
US6763371B1 (en) * 1999-05-10 2004-07-13 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for collaborative communication in a communication network
US20040267871A1 (en) * 2003-06-27 2004-12-30 Christopher Pratley Method and apparatus for viewing and managing collaboration data from within the context of a shared document
US6912573B2 (en) * 2000-02-15 2005-06-28 International Business Machines Corporation Method for acquiring content information, and software product, collaboration system and collaboration server for acquiring content information
US20050160396A1 (en) * 2004-01-15 2005-07-21 Chadzynski Pawel Z. Synchronous and asynchronous collaboration between heterogeneous applications
US6983313B1 (en) * 1999-06-10 2006-01-03 Nokia Corporation Collaborative location server/system
US20060005207A1 (en) * 2004-06-25 2006-01-05 Louch John O Widget authoring and editing environment
US20060080432A1 (en) * 2004-09-03 2006-04-13 Spataro Jared M Systems and methods for collaboration
US7039562B1 (en) * 2001-10-12 2006-05-02 I2 Technologies Us, Inc. Graphical design and automatic generation of supply chain collaboration services capable of understanding supply chain semantics
US20060129942A1 (en) * 2004-11-24 2006-06-15 Mccary David W Collaborative platform
US20060294459A1 (en) * 2000-12-22 2006-12-28 International Business Machines Corporation Method and apparatus for end-to-end content publishing system using xml with an object dependency graph
US7162528B1 (en) * 1998-11-23 2007-01-09 The United States Of America As Represented By The Secretary Of The Navy Collaborative environment implemented on a distributed computer network and software therefor

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5109413A (en) * 1986-11-05 1992-04-28 International Business Machines Corporation Manipulating rights-to-execute in connection with a software copy protection mechanism
JP3073590B2 (en) * 1992-03-16 2000-08-07 富士通株式会社 Electronic data protection system, licensor's device and user's device
US5276735A (en) * 1992-04-17 1994-01-04 Secure Computing Corporation Data enclave and trusted path system
US5367573A (en) * 1993-07-02 1994-11-22 Digital Equipment Corporation Signature data object
IL110891A (en) * 1993-09-14 1999-03-12 Spyrus System and method for data access control
US6135646A (en) * 1993-10-22 2000-10-24 Corporation For National Research Initiatives System for uniquely and persistently identifying, managing, and tracking digital objects
US5499298A (en) * 1994-03-17 1996-03-12 National University Of Singapore Controlled dissemination of digital information
US5715403A (en) * 1994-11-23 1998-02-03 Xerox Corporation System for controlling the distribution and use of digital works having attached usage rights where the usage rights are defined by a usage rights grammar
US5629980A (en) * 1994-11-23 1997-05-13 Xerox Corporation System for controlling the distribution and use of digital works
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
CA2683230C (en) * 1995-02-13 2013-08-27 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US5765152A (en) * 1995-10-13 1998-06-09 Trustees Of Dartmouth College System and method for managing copyrighted electronic media
WO1997025798A1 (en) * 1996-01-11 1997-07-17 Mrj, Inc. System for controlling access and distribution of digital property
US5982390A (en) * 1996-03-25 1999-11-09 Stan Stoneking Controlling personality manifestations by objects in a computer-assisted animation environment
US5673316A (en) * 1996-03-29 1997-09-30 International Business Machines Corporation Creation and distribution of cryptographic envelope
US6006332A (en) * 1996-10-21 1999-12-21 Case Western Reserve University Rights management system for digital media
US6314408B1 (en) * 1997-07-15 2001-11-06 Eroom Technology, Inc. Method and apparatus for controlling access to a product
US6044469A (en) * 1997-08-29 2000-03-28 Preview Software Software publisher or distributor configurable software security mechanism
US6385596B1 (en) * 1998-02-06 2002-05-07 Liquid Audio, Inc. Secure online music distribution system
US6219788B1 (en) * 1998-05-14 2001-04-17 International Business Machines Corporation Watchdog for trusted electronic content distributions
US7110984B1 (en) * 1998-08-13 2006-09-19 International Business Machines Corporation Updating usage conditions in lieu of download digital rights management protected content
US6226618B1 (en) * 1998-08-13 2001-05-01 International Business Machines Corporation Electronic content delivery system
US6510513B1 (en) * 1999-01-13 2003-01-21 Microsoft Corporation Security services and policy enforcement for electronic data
US7073063B2 (en) * 1999-03-27 2006-07-04 Microsoft Corporation Binding a digital license to a portable device or the like in a digital rights management (DRM) system and checking out/checking in the digital license to/from the portable device or the like
JP3471654B2 (en) * 1999-04-06 2003-12-02 富士通株式会社 License server, copyright holder system, user system, system, recording medium, and content use control method
US6580683B1 (en) * 1999-06-23 2003-06-17 Dataplay, Inc. Optical recording medium having a master data area and a writeable data area
US6289455B1 (en) * 1999-09-02 2001-09-11 Crypotography Research, Inc. Method and apparatus for preventing piracy of digital content
US7774279B2 (en) * 2001-05-31 2010-08-10 Contentguard Holdings, Inc. Rights offering and granting
US7103663B2 (en) * 2001-06-11 2006-09-05 Matsushita Electric Industrial Co., Ltd. License management server, license management system and usage restriction method
KR20040015714A (en) * 2001-07-17 2004-02-19 마쯔시다덴기산교 가부시키가이샤 Content usage device and network system, and license information acquisition method
JP3734461B2 (en) * 2001-08-08 2006-01-11 松下電器産業株式会社 License information converter
US7487363B2 (en) * 2001-10-18 2009-02-03 Nokia Corporation System and method for controlled copying and moving of content between devices and domains based on conditional encryption of content key depending on usage
JP4477822B2 (en) * 2001-11-30 2010-06-09 パナソニック株式会社 Information converter
US20030126086A1 (en) * 2001-12-31 2003-07-03 General Instrument Corporation Methods and apparatus for digital rights management
US7080043B2 (en) * 2002-03-26 2006-07-18 Microsoft Corporation Content revocation and license modification in a digital rights management (DRM) system on a computing device
US20030198347A1 (en) * 2002-04-22 2003-10-23 Octalis Sa System for handling digital rights and keys in business-to-business applications, computer software program, computer software modules and software products therefore
WO2003096136A2 (en) * 2002-05-10 2003-11-20 Protexis Inc. System and method for multi-tiered license management and distribution using networked clearinghouses
KR100551892B1 (en) * 2002-06-21 2006-02-13 주식회사 케이티 License issuance apparatus and digital rights management system snd method using it
JP3749212B2 (en) * 2002-09-17 2006-02-22 富士通株式会社 LICENSE MANAGEMENT DEVICE, LICENSE MANAGEMENT METHOD, AND COMPUTER-READABLE RECORDING MEDIUM CONTAINING PROGRAM FOR CAUSING COMPUTER TO EXECUTE THE METHOD
JP4580655B2 (en) * 2003-01-14 2010-11-17 パナソニック株式会社 Content usage management system
EP1591912A1 (en) * 2003-01-14 2005-11-02 Matsushita Electric Industrial Co., Ltd. System, method, and program for using or managing content
JP2004303108A (en) * 2003-04-01 2004-10-28 Hitachi Ltd Terminal equipment with license moving function
JP2004303111A (en) * 2003-04-01 2004-10-28 Hitachi Ltd Portable terminal with license management function
AU2003230086A1 (en) * 2003-05-15 2004-12-03 Nokia Corporation Transferring content between digital rights management systems
JP2004348286A (en) * 2003-05-20 2004-12-09 Sony Corp Information processor, informed processing method, and information processing system
KR20040107602A (en) * 2003-06-05 2004-12-23 삼성전자주식회사 License Management System And Method for Playing Contents in Home Network
US20050044391A1 (en) * 2003-07-25 2005-02-24 Matsushita Electric Industrial Co., Ltd. Data processing apparatus and data distribution apparatus
KR100493904B1 (en) * 2003-09-18 2005-06-10 삼성전자주식회사 Method for DRM license supporting plural devices
CN100483296C (en) * 2003-10-22 2009-04-29 Nxp股份有限公司 Digital rights management unit for a digital rights management system
JP2005141414A (en) * 2003-11-05 2005-06-02 Sony Corp Information processing system, method, and apparatus
EP1702251A2 (en) * 2004-01-08 2006-09-20 Matsushita Electric Industries Co., Ltd. Content distribution system, license distribution method and terminal device
JP4732746B2 (en) * 2004-01-08 2011-07-27 パナソニック株式会社 Content distribution system, license distribution method, and terminal device
US7546641B2 (en) * 2004-02-13 2009-06-09 Microsoft Corporation Conditional access to digital rights management conversion
US8843413B2 (en) * 2004-02-13 2014-09-23 Microsoft Corporation Binding content to a domain
US7676846B2 (en) * 2004-02-13 2010-03-09 Microsoft Corporation Binding content to an entity
AU2005225847B2 (en) * 2004-03-26 2011-05-26 Adrea Llc Method of and system for generating an authorized domain
WO2005093583A1 (en) * 2004-03-29 2005-10-06 Matsushita Electric Industrial Co., Ltd. Right management device, terminal device, and right management system
US7552122B1 (en) * 2004-06-01 2009-06-23 Sanbolic, Inc. Methods and apparatus facilitating access to storage among multiple computers
KR100694064B1 (en) * 2004-10-08 2007-03-12 삼성전자주식회사 Method and Apparatus for converting DRM
FR2881596A1 (en) * 2005-01-28 2006-08-04 Thomson Licensing Sa METHOD FOR PROTECTING AUDIO AND / OR VIDEO DIGITAL CONTENTS AND ELECTRONIC DEVICES USING THE SAME
KR100506530B1 (en) * 2005-03-14 2005-08-03 삼성전자주식회사 Method for DRM license supporting plural devices
KR100763193B1 (en) * 2005-10-13 2007-10-04 삼성전자주식회사 System and Method for providing DRM license
US20080114693A1 (en) * 2006-11-14 2008-05-15 Fabrice Jogand-Coulomb Method for allowing content protected by a first DRM system to be accessed by a second DRM system

Patent Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5915091A (en) * 1993-10-01 1999-06-22 Collaboration Properties, Inc. Synchronization in video conferencing
US6633924B1 (en) * 1997-10-02 2003-10-14 Charles Wu Object synchronization between objects stores on different computers
US7162528B1 (en) * 1998-11-23 2007-01-09 The United States Of America As Represented By The Secretary Of The Navy Collaborative environment implemented on a distributed computer network and software therefor
US6334141B1 (en) * 1999-02-02 2001-12-25 International Business Machines Corporation Distributed server for real-time collaboration
US6463460B1 (en) * 1999-04-23 2002-10-08 The United States Of America As Represented By The Secretary Of The Navy Interactive communication system permitting increased collaboration between users
US6763371B1 (en) * 1999-05-10 2004-07-13 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for collaborative communication in a communication network
US6983313B1 (en) * 1999-06-10 2006-01-03 Nokia Corporation Collaborative location server/system
US6748418B1 (en) * 1999-06-18 2004-06-08 International Business Machines Corporation Technique for permitting collaboration between web browsers and adding content to HTTP messages bound for web browsers
US20020073059A1 (en) * 2000-02-14 2002-06-13 Foster Douglas R. Information access, collaboration and integration system and method
US6912573B2 (en) * 2000-02-15 2005-06-28 International Business Machines Corporation Method for acquiring content information, and software product, collaboration system and collaboration server for acquiring content information
US20060294459A1 (en) * 2000-12-22 2006-12-28 International Business Machines Corporation Method and apparatus for end-to-end content publishing system using xml with an object dependency graph
US20030009603A1 (en) * 2000-12-27 2003-01-09 Ruths Derek Augustus Samuel System and method for managing collaborative data representations
US20030023685A1 (en) * 2001-04-17 2003-01-30 Cousins Downs Partnership Data processing system for mapping a collaborative reasoning process
US7039562B1 (en) * 2001-10-12 2006-05-02 I2 Technologies Us, Inc. Graphical design and automatic generation of supply chain collaboration services capable of understanding supply chain semantics
US20040267871A1 (en) * 2003-06-27 2004-12-30 Christopher Pratley Method and apparatus for viewing and managing collaboration data from within the context of a shared document
US20050160396A1 (en) * 2004-01-15 2005-07-21 Chadzynski Pawel Z. Synchronous and asynchronous collaboration between heterogeneous applications
US20060005207A1 (en) * 2004-06-25 2006-01-05 Louch John O Widget authoring and editing environment
US20060080432A1 (en) * 2004-09-03 2006-04-13 Spataro Jared M Systems and methods for collaboration
US20060129942A1 (en) * 2004-11-24 2006-06-15 Mccary David W Collaborative platform

Cited By (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316088B2 (en) * 2004-07-06 2012-11-20 Nokia Corporation Peer-to-peer engine for object sharing in communication devices
US20060010204A1 (en) * 2004-07-06 2006-01-12 Nokia Corporation Peer-to-peer engine for object sharing in communication devices
US20090037829A1 (en) * 2007-08-01 2009-02-05 Microsoft Corporation Framework to integrate web services with on-premise software
US10965745B2 (en) 2008-11-26 2021-03-30 Calgary Scientific Inc. Method and system for providing remote access to a state of an application program
US10334042B2 (en) 2008-11-26 2019-06-25 Calgary Scientific Inc. Method and system for providing remote access to a state of an application program
US8726147B1 (en) * 2010-03-12 2014-05-13 Symantec Corporation Systems and methods for restoring web parts in content management systems
US20120079383A1 (en) * 2010-09-29 2012-03-29 Reghu Ram Thanumalayan Server independent deployment of plug-ins
US8613007B2 (en) * 2010-09-29 2013-12-17 Business Objects Software Limited Server independent deployment of plug-ins
US10410306B1 (en) 2011-01-04 2019-09-10 Calgary Scientific Inc. Method and system for providing remote access to data for display on a mobile device
US20140218399A1 (en) * 2011-04-07 2014-08-07 International Business Machines Corporation Systems and methods for managing computing systems utilizing augmented reality
US9391860B2 (en) * 2011-04-07 2016-07-12 Globalfoundries, Inc.. Systems and methods for managing computing systems utilizing augmented reality
US9712413B2 (en) 2011-04-07 2017-07-18 Globalfoundries Inc. Systems and methods for managing computing systems utilizing augmented reality
US20150195168A1 (en) * 2011-04-07 2015-07-09 International Business Machines Corporation Systems and methods for managing computing systems utilizing augmented reality
US9219666B2 (en) 2011-04-07 2015-12-22 International Business Machines Corporation Systems and methods for managing computing systems utilizing augmented reality
US9219665B2 (en) * 2011-04-07 2015-12-22 International Business Machines Corporation Systems and methods for managing computing systems utilizing augmented reality
US10693940B2 (en) 2011-08-15 2020-06-23 Calgary Scientific Inc. Remote access to an application program
US10284688B2 (en) 2011-09-30 2019-05-07 Calgary Scientific Inc. Tiered framework for proving remote access to an application accessible at a uniform resource locator (URL)
US10904363B2 (en) 2011-09-30 2021-01-26 Calgary Scientific Inc. Tiered framework for proving remote access to an application accessible at a uniform resource locator (URL)
US20170302708A1 (en) * 2011-11-23 2017-10-19 Calgary Scientific Inc. Methods and systems for collaborative remote application sharing and conferencing
US10454979B2 (en) * 2011-11-23 2019-10-22 Calgary Scientific Inc. Methods and systems for collaborative remote application sharing and conferencing
US9032385B2 (en) 2011-12-28 2015-05-12 Lg Electronics Inc. Mobile terminal and control method thereof
US10949188B2 (en) 2011-12-28 2021-03-16 Microsoft Technology Licensing, Llc Mobile terminal and control method thereof
US9575742B2 (en) 2011-12-28 2017-02-21 Microsoft Technology Licensing, Llc Mobile terminal and control method thereof
US20130288603A1 (en) * 2012-04-26 2013-10-31 Qualcomm Incorporated Orientational collaboration of data between multiple devices
US8923760B2 (en) * 2012-04-26 2014-12-30 Qualcomm Incorporated Orientational collaboration of data between multiple devices
US20130332526A1 (en) * 2012-06-10 2013-12-12 Apple Inc. Creating and sharing image streams
US20140047409A1 (en) * 2012-08-13 2014-02-13 Magnet Systems Inc. Enterprise application development tool
US10136115B2 (en) * 2014-05-14 2018-11-20 Tencent Technology (Shenzhen) Company Limited Video shooting method and apparatus
US11074552B1 (en) 2014-06-06 2021-07-27 Massachusetts Mutual Life Insurance Company Methods for using interactive huddle sessions and sub-applications
US11132643B1 (en) 2014-06-06 2021-09-28 Massachusetts Mutual Life Insurance Company Systems and methods for managing data in remote huddle sessions
US11270264B1 (en) 2014-06-06 2022-03-08 Massachusetts Mutual Life Insurance Company Systems and methods for remote huddle collaboration
US11294549B1 (en) * 2014-06-06 2022-04-05 Massachusetts Mutual Life Insurance Company Systems and methods for customizing sub-applications and dashboards in a digital huddle environment
US9857942B2 (en) * 2014-12-24 2018-01-02 Wistron Corporation Method of connecting device adapted to interactive whiteboard system and host device thereof
US20160188170A1 (en) * 2014-12-24 2016-06-30 Wistron Corporation Method of connecting device adapted to interactive whiteboard system and host device thereof
US20230068410A1 (en) * 2021-08-24 2023-03-02 Figma, Inc. Integrated application platform to implement widgets

Also Published As

Publication number Publication date
KR100763193B1 (en) 2007-10-04
KR20070041313A (en) 2007-04-18
CN100440237C (en) 2008-12-03
KR20070041325A (en) 2007-04-18
KR20080045667A (en) 2008-05-23
KR20070041329A (en) 2007-04-18
US8805742B2 (en) 2014-08-12
CN101330380B (en) 2011-05-18
US20070100764A1 (en) 2007-05-03
EP2287771A2 (en) 2011-02-23
KR101300816B1 (en) 2013-09-16
JP2011146051A (en) 2011-07-28
CN101330381A (en) 2008-12-24
CN1949239A (en) 2007-04-18
EP1775671A1 (en) 2007-04-18
EP2287770A3 (en) 2011-03-23
US20070100767A1 (en) 2007-05-03
JP4767810B2 (en) 2011-09-07
JP2007110730A (en) 2007-04-26
KR20120089228A (en) 2012-08-09
CN1949238A (en) 2007-04-18
US8103593B2 (en) 2012-01-24
JP5209862B2 (en) 2013-06-12
EP2287770A2 (en) 2011-02-23
CN101262336B (en) 2011-08-24
EP1775672A1 (en) 2007-04-18
JP2007109239A (en) 2007-04-26
EP1775670A1 (en) 2007-04-18
CN101330381B (en) 2012-02-08
JP4755059B2 (en) 2011-08-24
JP5361921B2 (en) 2013-12-04
CN101262336A (en) 2008-09-10
CN100446020C (en) 2008-12-24
CN1949237A (en) 2007-04-18
EP2287771A3 (en) 2011-03-30
US20070100763A1 (en) 2007-05-03
CN101330380A (en) 2008-12-24
JP2007109225A (en) 2007-04-26
KR101307413B1 (en) 2013-11-21
KR100781532B1 (en) 2007-12-03
CN100440236C (en) 2008-12-03

Similar Documents

Publication Publication Date Title
US20110113350A1 (en) Method, system and program product for building collaboration applications using multiple-peer user interface libraries
US20080091777A1 (en) Method, system and program product for building collaboration applications using multiple-peer user interface libraries
US8566732B2 (en) Synchronization of widgets and dashboards
US8122081B2 (en) Method and apparatus for a portable information agent
US7950026B1 (en) Virtual application execution system and method
US7937452B2 (en) Framework for rendering plug-ins in remote access services
US20120066679A1 (en) Disposable virtual desktop for transient use by multiple users
US8869043B2 (en) System for presenting applications on instant messaging clients
US9383891B2 (en) Methods and systems for an intermediate graphical desktop sharing protocol
EP2151757A1 (en) Apparatus and method of supporting plurality of operating systems
US20160014221A1 (en) Method and apparatus for a distributable globe graphical object
US20190020698A1 (en) Collaborative Platform for Communication, Application Development and Use
US11922195B2 (en) Embeddable notebook access support
Whitechapel et al. Windows phone 8 development internals
US20100257474A1 (en) Method enabling a computer apparatus run by an operating system to execute software modules
US7792904B2 (en) Sharing material in a master-slave configuration using an instant messaging infrastructure
Cheng et al. Weaving a social fabric into existing software
Raj et al. Cloud-Native Computing: How to Design, Develop, and Secure Microservices and Event-Driven Applications
Sayfan Mastering Kubernetes: Level up your container orchestration skills with Kubernetes to build, run, secure, and observe large-scale distributed apps
US7949705B1 (en) Dynamic desktop switching for thin clients
Canfora et al. Toward seamless migration of Java AWT-based applications to personal wireless devices
US20140108564A1 (en) Architecture for a system of portable information agents
US20120130951A1 (en) Non-programmatic access to enterprise messaging administration
Grolaux Transparent migration and adaptation in a graphical user interface toolkit.
Wang et al. FUSION: A unified application model for virtual mobile infrastructure

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION