All Processes have one and only one ProcessEnvironment which is assigned when the process is created. The ProcessEnvironment cannot be replaced (although it may be altered) once the process is created.
Classes, when registered in the ClassRespository, will have a parameter specifying if its static variables are ProcessEnvironment specific or are shared by all ProcessEnvironments. System.out is an example of a static variable that is not shared. Drivers might need shared static variables? (They could just be singletons, but then a system wide registry is needed, this needs to be shared across all processes, hence it is static, thus I reason we should just make it offical instead of hacking in a few exceptions). Hmmm. Perhaps this needs to be more granular.
Objects created in one ProcessEnvironment are innaccessable in any other ProcessEnvironment, thus ProcessEnvironment provides a partitioning on the list of objects.
When a child process is created, the ProcessEnvironment of the parent is cloned and given to the child? All class static fields are re-initilized or tied to the parent's version depending upon the policy of the class? Hmmm....
If a parent process wants to share its class static fields and objects with a child process, it can provide its ProcessEnvironment when the child process is created, in this way new class static fields are not created.
Thus, child processes can either a) be created with a blank/cloned environemnt with new statics, OR b) share their environment with the parent (at the parent's discression).
Content of these pages are owned and copyrighted by the poster.