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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000004590 computer program Methods 0.000 claims description 20
- 238000003860 storage Methods 0.000 claims description 20
- 238000013507 mapping Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 6
- 230000008859 change Effects 0.000 abstract description 22
- 238000009877 rendering Methods 0.000 abstract description 8
- 238000004891 communication Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000002688 persistence Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/321—Cryptographic 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/3213—Cryptographic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2115—Third party
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/00086—Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
- G11B20/00137—Circuits 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/00086—Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
- G11B20/00188—Circuits 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/00086—Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
- G11B20/0021—Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving encryption or decryption of contents recorded on or reproduced from a record carrier
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/00086—Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
- G11B20/0021—Circuits 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/00485—Circuits 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/00492—Circuits 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/00086—Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
- G11B20/00731—Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving a digital rights management system for enforcing a usage restriction
- G11B20/00847—Circuits 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/60—Digital content management, e.g. content distribution
- H04L2209/603—Digital right managament [DRM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2463/00—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
- H04L2463/101—Additional 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
- 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.
- 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.
- 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.
- 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. - 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 inFIG. 1 , for each event notification received instep 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 instep 104. If the event has a peer widget ID in step 104 (“Y” branch), then the process continues withstep 202 inFIG. 2 , whereby the collaboration server application processes the event, as will be discussed herein below with respect toFIG. 2 . However, if the event does not have a peer widget ID in step 104 (“N” branch), then the collaboration server application determines instep 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 withstep 302 inFIG. 3 , whereby the collaboration server application creates peer widgets, as will be discussed herein below with respect toFIG. 3 . On the other hand, instep 108, if the event is not for starting a collaboration program (“N” branch), then the collaboration server application determines instep 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 instep 112, ending the process atstep 116. However, if instep 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 inFIG. 4 , starting withstep 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 toFIG. 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 instep 102 ofFIG. 1 . In particular, when it is determined instep 104 ofFIG. 1 that the event has a peer widget ID, the collaboration server application receives instep 202 the event notification request message along with the peer widget ID. The collaboration server application identifies instep 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 instep 206 suitable methods in the widget and passes as parameters all required information about the event. Instep 208, the collaboration server application sends the event from the widget to event handlers in the collaboration application deployed on the collaboration server application. Instep 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, instep 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 instep 216 as to whether or not the other client program(s) use a request-based Internet protocol. If it is determined instep 216 that a client program uses a request-based Internet protocol (“Y” branch), then the process continues withstep 402 inFIG. 4 , as will be discussed herein below with respect toFIG. 4 . However, if it is determined instep 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 instep 218 the changes in the widget state, ending the process atstep 220. So the flowchart inFIG. 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 instep 114 ofFIG. 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 instep 304, when the collaboration application is launched, the collaboration server application makes a determination instep 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 instep 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 instep 308. Instep 312, the new peer widget is initialized with the current shared state of the shared widget. However, if instep 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 instep 312 and/or after a default state is set for the new peer widget instep 310, the new peer widget is added to the list of existing peer widgets mapped to the widget instep 316. Instep 318, a rendering of the new peer widget is displayed on the client program, ending the process atstep 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 toFIG. 1 , when the event is for requesting a screen refresh instep 110, the process continues atstep 402 inFIG. 4 with the collaboration server application receiving requests from the client program for a copy of the state of the shared widget. Instep 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 instep 408 the collaboration server application sends to the client program a copy of the shared widget's state, ending the process atstep 410. However, if there are only a few changes to the shared widget since the client program was last updated (“Y” branch), then instep 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 atstep 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 toFIG. 5 ,reference numeral 500 depicts a collaboration system that includes a plurality ofclients host server 516 connected over a network communications channel, with thehost server 516 having a collaboration server application implemented thereon for facilitating deployment of a collaboration application using the collaboration server application installed onserver 516 for providing collaboration among the one ormore clients 502 through 514, in accordance with an embodiment of the present invention. In one embodiment, thecollaboration system 500 comprises a network communications channel, for instance, theInternet 520, where a plurality of clients and servers are connected to thenetwork communications channel 520, which serves as a communications channel for the various components of thesystem 500. Thecommunications 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 depictednetworked system 500 shown inFIG. 5 shows asingle server 516 andclients 502 through 514, thesystem 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 thecollaboration server 516 and to collaborate with one another over thenetwork 520. - Turning to
FIG. 6 ,FIG. 6 shows an embodiment of acollaboration server 600 having implemented thereon acollaboration server application 612 that is configured to deploy acollaboration application 614 on theserver 600, in accordance with the invention. In an embodiment, thecollaboration server 600 includes a central processing unit (CPU) 604, alocal storage device 602, anetwork interface 608, and amemory 610. TheCPU 604 is configured generally to execute operations within thecollaboration server 600. The user interface 606, in one embodiment, is configured to allow a user to interact with theserver 600, including allowing input data and commands from a user and communicating output data to the user. Thenetwork interface 608 is configured, in one embodiment, to facilitate network communications of thecollaboration server 600 over a network communications channel, for instance, theInternet 502 of the network 500 (shown inFIG. 5 ). Thelocal memory 610 is configured, in one embodiment, to store acollaboration server application 612 that is configured to deploy a collaboration application 614 (also stored in one embodiment in memory 610) on theserver 600. Thecollaboration server application 612 is discussed further herein below with respect toFIG. 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 inFIG. 6 ), where thecollaboration server application 700 facilitates deployment of a collaboration application, such as thecollaboration application 614 deployed on thehost server 600 ofFIG. 6 having installed thereon a collaboration server application (referred to byreference numeral 612 inFIG. 6 ) for facilitating deployment of thecollaboration application 614 on thehost server 600. As shown inFIG. 7 , thecollaboration 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, thecollaboration server application 700 includes aweb server module 724, anapplication container module 722, a peer-widget mappings module 708, a multiple-peerUI library module 710, acollaboration sessions module 712, a synchronization andnotification module 704, apersistence module 706, ascalability module 714, a languagecompiler translation module 716, anevent module 718, and an entrypoint application module 720. In an embodiment, theweb 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, theapplication 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 entrypoint 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 toFIG. 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-peerUI library module 710 is configured to handle the functions of processing widget events (described with respect toFIG. 2 ), creating peer widgets on collaborating client programs when a shared widget is created (described with respect toFIG. 3 ), and communicating changes in state of a shared widget to collaborating client programs (described with respect toFIG. 4 ). The multiple-peerUI library module 710 uses peer-widget mappings and some knowledge regarding the collaboration sessions gathered from thecollaboration 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 andnotification 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. Thescalability 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, thepersistence 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 asystem 800 for building a collaboration server application that facilitates deployment of a collaboration application, according to the present invention. As depicted,system 800 includes acomputer 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 acomputer 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 ininfrastructure 802. - In general, a
user A 830 interfaces withinfrastructure 802 for accessing a collaboration application, for instance, acollaboration application 818 deployed on the computer system orserver 804 for collaborating with other users over a network, such as thenetwork 500 shown inFIG. 5 . Similarly, one or more users B, C and D (designated bynumerals infrastructure 802 for accessing thecollaboration application 818 for collaborating with each other. For example, if thecollaboration application 818 is a chess application or program, theusers server 804 usingcomputer 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 accessinfrastructure 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 inFIG. 5 ). In the case of the latter, the network can be any type of network such as the Internet (as shown inFIG. 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 withinfrastructure 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 toinfrastructure 802. It should be understood that under the present invention,infrastructure 802 could be owned and/or operated by a party such asprovider 832, or by an independent entity. Regardless, use ofinfrastructure 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 inFIG. 8 ) could support and configureinfrastructure 802. - Computer system or
server 804 is shown to include a CPU (hereinafter “processingunit 806”), amemory 812, abus 810, and input/output (I/O) interfaces 808. Further,computer system 800 is shown in communication with external I/O devices/resources 824 andstorage system 822. In general, processingunit 806 executes computer program codes, such as the collaboration server application 814 or program code stored inmemory 812. Similarly, processingunit 806 executes the computer program code for the JVM (Java Virtual Machine) 816 having customized or multiple-peer widget libraries 816, and thecollaboration application 818 that is metric collector and transmitter script inserted within each of theother web pages collaboration application 818 using the JVM (Java Virtual Machine) 816 having customized or multiple-peer widget libraries 816, theprocessing unit 806 can read and/or write data, to/frommemory 812,storage system 822, and/or I/O interfaces 808.Bus 810 provides a communication link between each of the components incomputer system 800.External devices 824 can comprise any devices (e.g., keyboard, pointing device, display, etc.) that enable a user to interact withcomputer system 800 and/or any devices (e.g., network card, modem, etc.) that enablecomputer 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, processingunit 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/orstorage 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 moreexternal devices 824. Still further, it is understood that one or more additional components (e.g., system software, math co-processing unit, etc.) not shown inFIG. 8 can be included incomputer 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 withincomputer 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 intocomputer 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.
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)
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)
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)
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)
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 |
-
2006
- 2006-08-07 KR KR1020060074285A patent/KR100763193B1/en not_active IP Right Cessation
- 2006-09-08 KR KR1020060086972A patent/KR20070041325A/en not_active Application Discontinuation
- 2006-09-20 KR KR1020060090919A patent/KR100781532B1/en not_active IP Right Cessation
- 2006-10-02 JP JP2006270915A patent/JP5209862B2/en not_active Expired - Fee Related
- 2006-10-10 EP EP10185791A patent/EP2287770A3/en not_active Withdrawn
- 2006-10-10 EP EP06122035A patent/EP1775670A1/en not_active Ceased
- 2006-10-11 EP EP06122071A patent/EP1775671A1/en not_active Ceased
- 2006-10-11 EP EP06122072A patent/EP1775672A1/en not_active Ceased
- 2006-10-11 EP EP10185826A patent/EP2287771A3/en not_active Withdrawn
- 2006-10-12 JP JP2006278860A patent/JP4767810B2/en not_active Expired - Fee Related
- 2006-10-12 JP JP2006278864A patent/JP4755059B2/en not_active Expired - Fee Related
- 2006-10-13 US US11/580,110 patent/US8103593B2/en not_active Expired - Fee Related
- 2006-10-13 CN CN2008100916934A patent/CN101330380B/en not_active Expired - Fee Related
- 2006-10-13 CN CNB2006101322559A patent/CN100440237C/en not_active Expired - Fee Related
- 2006-10-13 CN CNB2006101322493A patent/CN100440236C/en not_active Expired - Fee Related
- 2006-10-13 US US11/546,993 patent/US20070100764A1/en not_active Abandoned
- 2006-10-13 CN CN2008100916949A patent/CN101330381B/en not_active Expired - Fee Related
- 2006-10-13 US US11/546,991 patent/US8805742B2/en not_active Expired - Fee Related
- 2006-10-13 CN CNB2006101322510A patent/CN100446020C/en not_active Expired - Fee Related
- 2006-10-13 CN CN2008100910995A patent/CN101262336B/en not_active Expired - Fee Related
-
2008
- 2008-04-29 KR KR1020080040053A patent/KR101307413B1/en active IP Right Grant
-
2011
- 2011-01-14 US US13/006,997 patent/US20110113350A1/en not_active Abandoned
- 2011-02-18 JP JP2011033131A patent/JP5361921B2/en not_active Expired - Fee Related
-
2012
- 2012-07-20 KR KR1020120079504A patent/KR101300816B1/en active IP Right Grant
Patent Citations (19)
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)
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
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 |