public final class Architecture extends io.sphere.sdk.models.Base
The JVM SDK consists of a lot of SBT modules:
(The picture is maybe outdated but is supposed to show the principle.)
Modules which do not depend on each other can be compiled and tested in parallel. The build is faster since all available processors can be used instead of working with just one processor.
The middle of the following CPU diagram shows the CPU usage at the time of executing tests in a clean project:
Another reason to work with a high modularization is to make sure that the SDK is easy extensible and classes are not unnecessarily coupled to each other. For example the client modules do not "know" the model modules (containing queries and commands) and vice versa. So it must be possible to create more model packages without touching the client. This was the problem of the old SDK which bound the services directly to the client and made it impossible to extend without touching the original code. In addition removing the service coupling to the client makes it possible to create different clients for different future implementations.