If common object enivronment is deployed on different computers, it will become a distributed object environment. For the environment holds all information and parameters of interface objects, it can act as a proxy for distributed functions of objects. As a result, applications access these distributed objects as if they are located at local, and programmers do not need face with kinds of standards or interface of different languages. For environment supports multi-language, you can developed service using java, c/c++,lua,python,etc, and call it from client side with other languages.
Above figure is a normal function call. If we distribute the environment on two computers, it will be a distributed environment, which is shown as follow:
The changes only occur on the environment. For applications, no matter they are client or server, may be not aware of these changes. For programmers, the environment helps them to solve many problems such as how to select standards and interfaces, or how to programming, especially in the case when client side needs to communicates with different servers of different languages.
We put objects together, describe them, manage them and provide an environment to them. More and more functions can be added to the environment, rather than special languages realizing these objects. Common interface, common architecture, and all of these will simply programming and freeing programmers from meaningless work.
Think about: you write a library in c/c++, then you have to rewrite it for java,python,etc at some time later. Is it meaningful?