A distributed client-server application is modified while running. The application is not stopped so that updating of objects is transparent. A meta server catalogs all object classes for both the server and the clients. Modifications are specified by a run-time update tool and converted to change commands. The meta server receives the change commands and updates the structure of an application database. Object class definitions are read from the meta server and modified by the meta server to access the new structure of the application database. The modified object-class definitions are written back to persistent storage for the meta server, and compiled and linked to form new object classes. An object adaptor receives a list of modified object classes from the meta server and notifies all server and client caches of the object classes on the list. The obselete objects are invalidated by the caches and new objects are created using the most up-to-date class definitions. New references to the objects are sent to the new objects, although the old objects continue to process existing references until their reference count reaches zero and they are deleted. Old and new objects co-exist for a period of time during the run-time update.