Communicating active components: An environment for concurrent applications on parallel machines