MPJ Express has a layered design that allows incremental development, and provides the capability to update and swap layers in or out as needed. This helps mitigate the contradictory requirements of end users because they can opt to use high-performance proprietary network devices or choose the pure Java devices that use sockets. The MPJ Express design illustrates different levels of the software: the MPJ API, high-level, base-level, mpjdev, and xdev.