The current architecture (using Ensemble) is shown in fig. 1.1. Clients may access one of the higher-level abstractions, or they may access channels directly. Note that since Channel is an abstract class, a client will always have to access a specific subclass of Channel, e.g. EnsChannel for a channel implementation that uses Ensemble. The (Java) implementation of EnsChannel starts up an Ensemble process with which it communicates via sockets. Ensemble takes care of finding other Ensemble process groups with the same name and joining them.1.2