Developing and maintaining distributed business applications is hard. As if
writing business logic weren't hard enough, enterprise application developers
have also been saddled traditionally with the daunting task of implementing
transaction management, persistent state management, thread safety, resource
pooling, security, distribution and life cycle/location of business objects.
This makes enterprise application development more time-consuming and costly,
and requires a broad range of expertise from the development team.
Once an enterprise application has been developed, using its code across
other business applications becomes difficult because: (1) business logic is
mixed with code to manage transactions, persistence, security and resources;
and (2) other applications may employ different programming models. Ideally,
one would like to reuse business logic as much... (more)