If common object environment 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.
The 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 follows:
The changes only occur on the environment. For applications, no matter whether they are client or server, may not be 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 program, 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 program 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?