1. A method of providing data sharing between applications, the applications running on different computers and communicating via a network, the applications each sharing a distributed object, the method comprising: maintaining, by each application, on the computers on which the applications are respectively running, respective invariant copies of the distributed object and variant copies of the distributed object, where each application performs update operations to the distributed object, where such an update operation issued by a given one of the applications is performed by: executing the update operation on the variant copy maintained by the given application without the given application waiting for the other applications to perform the operation, where each invariant copy is guaranteed to converge to a same state if; and at each of the applications, including the given application that issued the update operation, executing the update operation on the corresponding invariant copies, respectively.