General Design Patterns

One general design principle of the framework is that the design is based on Java interfaces and that the actual implementations for example algorithms and helper routines are implemented as Java classes. This allows miscellaneous implementations to be compatible with the framework, multiple inheritances and ensures code compatibility and reuse due to interface inheritance.
The second design principle is that coherence within packages is kept as strong as possible and coupling between packages as light as necessary.
This results in substantial encapsulation and high reusability. For example our package JDRM which is responsible for distributed job management can be used completely independent of all other packages.
Thirdly it was paid attention to keep the design of our API as abstract as possible so that it can be used for new and unforeseen applications, and as slim and precise enough to use it easily. This helps to reduce the learning curve and to decrease maintenance overhead too.